我有一个多项目gradle构建,我在父构建中声明一个任务,该任务使用在子项目中声明的变量(值可以根据子项目而改变).但是,在配置阶段我得到一个错误,该变量不存在.我的设置看起来像
build.gradle(顶级)
subprojects {
myTask {
prop = valueDefinedInChild
}
}
Run Code Online (Sandbox Code Playgroud)
然后
build.gradle(子项目)
valueDefinedInChild = 'someValue'
Run Code Online (Sandbox Code Playgroud)
有没有办法正确地做到这一点?
Pet*_*ser 11
有一种方法可以做到这一点(project.evaluationDependsOnChildren()),但我建议只使用它作为最后的手段.相反,我会在顶层配置共性,并在子项目级别配置差异:
build.gradle(顶级):
subprojects {
task myTask { // add task to all subprojects
// common configuration goes here
}
}
Run Code Online (Sandbox Code Playgroud)
build.gradle(子项目):
myTask {
prop = 'someValue'
}
Run Code Online (Sandbox Code Playgroud)
避免重复自己的另一种方法是将公共代码分解为单独的脚本,并让子项目包含它apply from:.当逻辑仅适用于选定的子项目时,或者在需要避免父项目和子项目之间的耦合的情况下(例如,当使用Gradle的新配置按需功能时),这是一个很好的选择.
| 归档时间: |
|
| 查看次数: |
3144 次 |
| 最近记录: |