java - 扩展 gradle 子项目的清理和构建行为

标签 java gradle

我使用一个名为 TexturePacker 的程序将各个图像资源打包到单个纹理图集中以供在游戏中使用。我通常的工作流程是添加/更改 Assets ,然后使用 GUI 或命令行手动重新打包图像,并将输出发送到项目资源文件夹,并保留在源代码控制之下。这可行,但很乏味。无论如何,将各个 Assets 放在源代码控制下的项目根文件夹中,并使“打包到textureAtlas”步骤成为构建的自动化部分,感觉更“正确”。类似于我们如何将源代码保存在 VC 下,但不保存与构建相关的文件。

所以我的问题是,我怎样才能用 gradle 做到这一点?

据我所知,步骤是:

.git忽略输出文件夹(简单)

Hook 子项目的 Clean 任务,并删除输出文件夹(在 main/resources 中)

Hook 子项目的构建任务(或最合适的地方),并从 gradle 运行 JAR。

我发现了一篇关于从 gradle 运行 JAR 的文章,它看起来很简单,但其余的让我感到困惑。我意识到这可能是一个非常基本的问题,我只是对 gradle 有某种心理障碍,出于某种原因我无法理解它。无论如何,我的问题是如何最好地解决这个问题;希望这能帮助我总体上掌握 gradle。

感谢您的阅读!

最佳答案

Gradle 的伟大之处在于,如果您正确定义任务,那么您所描述的“步骤”大部分都会为您处理。所以直接回答你的问题。

  1. 只需将构建输出与 Gradle 输出的其余部分(类、jar 等)一起放入普通的“构建”文件夹中。无需向 .gitignore 添加其他文件夹。
  2. 如果您正确定义了输入/输出(如下所示),Gradle 将为您处理此问题。
  3. 只需将新任务添加为任何其他合适任务的依赖项即可。在许多情况下,只是“组装”任务。

如果您使用可执行 jar 来创建纹理,您可能需要使用 JavaExec 任务。

task buildTextures(type: JavaExec) {
    inputs.dir 'textures/dir'
    outputs.dir "$buildDir/textures"

    jvmArgs '-jar', 'somejar.jar'
    args // arguments to executable jar main class
}

assemble.dependsOn buildTextures

通过指定输入/输出,Gradle 将在执行clean 时负责删除输出目录。此外,您还可以获得增量构建支持,这意味着如果输入目录内容发生更改,此任务将再次运行。

关于java - 扩展 gradle 子项目的清理和构建行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27346103/

相关文章:

gradle - 如何在gradle中下载外部文件?

Java - 使用来自不同位置的多个文件和子文件夹创建 Zip 文件

java - Android 使用 RecyclerView 滚动时列表可以容纳多少个项目

android - 找不到检测目标软件包Firebase错误

android - 错误 :Unable to resolve dependency. ..无法解析项目

gradle - 编译任务运行成功,但未生成任何类文件

java - 我如何从 java web 应用程序跟踪用户的 IP 地址和 Windows 登录名

java - 包含文本的 JTextfield 上出现 nullpointerException

Java转码和操作mp3文件

android - 将 .aar 文件集成到多模块 android studio 项目中