我使用一个名为 TexturePacker 的程序将各个图像资源打包到单个纹理图集中以供在游戏中使用。我通常的工作流程是添加/更改 Assets ,然后使用 GUI 或命令行手动重新打包图像,并将输出发送到项目资源文件夹,并保留在源代码控制之下。这可行,但很乏味。无论如何,将各个 Assets 放在源代码控制下的项目根文件夹中,并使“打包到textureAtlas”步骤成为构建的自动化部分,感觉更“正确”。类似于我们如何将源代码保存在 VC 下,但不保存与构建相关的文件。
所以我的问题是,我怎样才能用 gradle 做到这一点?
据我所知,步骤是:
.git忽略输出文件夹(简单)
Hook 子项目的 Clean 任务,并删除输出文件夹(在 main/resources 中)
Hook 子项目的构建任务(或最合适的地方),并从 gradle 运行 JAR。
我发现了一篇关于从 gradle 运行 JAR 的文章,它看起来很简单,但其余的让我感到困惑。我意识到这可能是一个非常基本的问题,我只是对 gradle 有某种心理障碍,出于某种原因我无法理解它。无论如何,我的问题是如何最好地解决这个问题;希望这能帮助我总体上掌握 gradle。
感谢您的阅读!
最佳答案
Gradle 的伟大之处在于,如果您正确定义任务,那么您所描述的“步骤”大部分都会为您处理。所以直接回答你的问题。
- 只需将构建输出与 Gradle 输出的其余部分(类、jar 等)一起放入普通的“构建”文件夹中。无需向 .gitignore 添加其他文件夹。
- 如果您正确定义了输入/输出(如下所示),Gradle 将为您处理此问题。
- 只需将新任务添加为任何其他合适任务的依赖项即可。在许多情况下,只是“组装”任务。
如果您使用可执行 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/