在Gradle中管理项目的生成资源

时间:2018-10-21 16:01:19

标签: gradle resources

我有一个Gradle项目,该项目在/src/main/resources文件夹中有很多资源。出于性能原因,必须在构建时从其他资源生成一些资源。因此,我将所有内容拆分为多个子项目:

/MainProj/src/main/java - The application
/MainProj/src/main/resources
/InternalProj/src/main/java - Code for generating additional resources for MainProj
/InternalProj/src/main/resources

当我使用特殊的Gradle任务运行InternalProj时,它将生成一些文件到/InternalProj/output,然后将其复制到/MainProj/src/main/resources。不用说,这真的很丑,我想知道如何更好地做到这一点。我应该将它放在构建中还是直接放在/MainProj/src/main/resources中?也许使用符号链接?


编辑

我现在使用从/src/main/generated-resources/build/something的相对符号链接,到目前为止,它仍然可以正常工作。但是现在我有一个不同的问题:我有任务A生成一些资源,而任务B则依赖于那些资源,因此也依赖于A。如果我运行gradle Bgradle A B,则B仍然会失败,因为A生成的资源没有更新到其构建文件夹中。如何强制Gradle更新资源?

1 个答案:

答案 0 :(得分:0)

您可以将output文件添加到InternalProj的主要源集中:

示例Groovy代码:

sourceSets {
    main {
        resources {
            srcDirs "src/main/resources", "output"
        }
    }
}

相关答案:https://stackoverflow.com/a/38982006/3708426