我有一个子项目Gradle
project.ext.foo = "bar"
...
我将根项目Gradle文件作为
subprojects {
if (project.hasProperty("foo")) {
// not true
}
def hasFoo = project.findProperty('foo') ?: ""
// not finding it
}
我需要根据在单个子项目中设置或未设置的项目,在根gradle文件中配置子项目。
我尝试使用project.properties.each {}
转储,但无法发现我正在设置的属性。
1条答案
按热度按时间cetgtptt1#
在多项目构建中,Gradle将首先评估和配置根项目,然后配置子项目。
因此,在您的根项目
subprojects
闭包中,您尝试访问尚未设置的子项目属性,因为子项目尚未配置。添加一些调试日志有助于了解配置生命周期:
执行结果:
溶液
第一个简单的解决方案是在根项目中使用
project.afterEvaluate { }
特性,以确保在配置依赖于foo
属性的内容之前已经配置了子项目:结果:
处理子项目之间的共享配置的更好的解决方案是使用插件:请查看此专用文档