繁体   English   中英

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

[英]Extending a gradle subproject's clean and build behavior

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

所以我的问题变成了,如何用gradle做到这一点?

据我所知,步骤如下:

.gitignore输出文件夹(简单)

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

钩住子项目的构建任务(或最合适的地方),然后从gradle中运行JAR。

我找到了一篇有关从gradle运行JAR的文章,这似乎很简单,但是其余的内容使我感到困惑。 我意识到这可能是一个非常基本的问题,我只是有些gra不安,出于某种原因,我只是无法将其包裹住。 无论如何,我的问题是如何最好地解决这个问题。 希望这可以帮助我全面掌握gradle。

谢谢阅读!

Gradle的妙处在于,如果您正确定义任务,则所描述的“步骤”通常会为您处理。 因此,直接回答您的问题。

  1. 只需将构建输出与其余Gradle输出(类,罐子等)一起放入普通的“ build”文件夹中即可。 无需将其他文件夹添加到.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时将负责删除输出目录。 此外,您将获得增量构建支持,这意味着如果输入目录内容更改,此任务将再次运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM