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

时间:2014-12-07 18:19:37

标签: java gradle

我使用一个名为TexturePacker的程序将单个图像资源打包到单个纹理图集中,以便在游戏中使用。我通常的工作流程是添加/更改资产,然后使用GUI或命令行手动重新打包图像,并将输出发送到项目资源文件夹,它仍然处于源代码管理之下。这很有效,但很繁琐。无论如何,感觉更多"正确"将单个资产放在项目的源代码管理下的根文件夹中,并将"包装到textureAtlas"步骤是构建的自动化部分。类似于我们如何在VC下保留源代码而不是与构建相关的文件。

所以我的问题变成了,我怎么能用gradle做到这一点?

据我所知,步骤将是:

.gitignore输出文件夹(简单)

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

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

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

感谢阅读!

1 个答案:

答案 0 :(得分:1)

关于Gradle的好处是"步骤"如果您正确定义任务,那么您所描述的内容主要是为您处理的。所以直接回答你的任务。

  1. 只需将您的构建输出放在正常的构建中即可。包含Gradle输出其余部分的文件夹(类,jar等)。无需将另一个文件夹添加到.gitignore。
  2. 如果您正确定义输入/输出(如下所示),Gradle将为您处理此事。
  3. 只需将您的新任务添加为适合其他任何任务的依赖项。在许多情况下,只需简单地组装即可。任务。
  4. 如果您使用可执行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时删除输出目录。此外,您还可以获得增量构建支持,这意味着如果输入目录内容发生更改,此任务将再次运行。