我有一个Java项目(使用Gradle 4.6构建),它包含很少的模块,每个模块都有自己的build.gradle。主项目中还有build.gradle。所以结构看起来像:
/
/build.gradle
/module-number-one/build.gradle
/module-number-two/build.gradle
一切正常,但我无法从主脚本访问扩展属性。例如,/module-number-one/build.gradle
我有:
ext {
myProp = 'some value'
}
当我这样做时:
allprojects.findAll { Project project ->
println(project.ext.has('myProp'))
// or
println(project.hasProperty('myProp'))
// or
println(project
.getExtensions()
.getExtraProperties()
.getProperties()
.contains('myProp'))
}
我收到了假。是否可以仅从同一个文件访问ext,或者我做错了什么?
答案 0 :(得分:2)
项目属性评估的问题,如果你在project.afterEvaluate
之后放置属性引用,它应该可以工作:
task findModule {
subprojects {
project -> project.afterEvaluate {
println(project.name + ": " + project.ext.has('cons'))
println(project.name + ": " + project.hasProperty('cons'))
}
}
}
输出:
$ gradle -q findModule
module-number-one: true
module-number-one: true
module-number-two: false
module-number-two: false