覆盖主项目中定义的gradle选项

时间:2014-05-26 23:29:38

标签: gradle

我正在通过

为所有subprojects添加上传档案目录
uploadArchives {
    repositories {
       flatDir {dirs '../REPO'}
    }
}

现在我需要为一个子项目指定一个不同的目录。

我发现将添加添加到列表中,但我想替换目录。我知道我可以使用subprojects.findAll,但我也需要在其他地方覆盖设置的可能性。

免责声明:我的问题可能听起来很愚蠢,但我几周后就开始使用gradle而且必须承认,我对此几乎一无所知。我喜欢它并且它工作正常,但阅读手册不是一个选项(我只是一个BFU,我宁愿在阅读之前切换到makefile)。

1 个答案:

答案 0 :(得分:1)

通常,最干净的解决方案是从一开始就以正确的方式配置事物。有几种方法可以做到这一点。例如:

rootProject /的build.gradle:

configure(subprojects - project(":foo")) {
    uploadArchives {
        repositories {
            flatDir {dirs '../REPO'}
        }
    }
}

project(":foo") {
    uploadArchives {
        repositories {
            flatDir {dirs '../OTHER'}
        }
    }
}

或者,您可以有两个辅助脚本gradle/repoA.gradlegradle/repoB.gradle,每个子项目构建脚本都会将适当的脚本应用于apply from: "$rootDir/gradle/repoX.gradle"

最后,覆盖该值也可能有效(未经测试):

rootProject /子项目/的build.gradle:

uploadArchives.repositories[0].dirs = ["../OTHER"]    

PS:现在去学习一些Gradle。 : - )