gradle在父任务中使用在子任务中定义的变量
我有一个多项目渐变构建,我在父构建中声明一个任务,该任务使用在子项目中声明的变量(该值可以根据子项目而更改)。然而,我在配置阶段得到一个错误,变量不存在。我的设置看起来像 build.gradle(顶级) 然后 build.gradle(子项目) 有没有正确的方法可以做到这一点?有一种方法可以做到这一点(gradle在父任务中使用在子任务中定义的变量,gradle,Gradle,我有一个多项目渐变构建,我在父构建中声明一个任务,该任务使用在子项目中声明的变量(该值可以根据子项目而更改)。然而,我在配置阶段得到一个错误,变量不存在。我的设置看起来像 build.gradle(顶级) 然后 build.gradle(子项目) 有没有正确的方法可以做到这一点?有一种方法可以做到这一点(project.evaluationDependsOnChildren()),但我建议只在万不得已的情况下使用它。相反,我将在顶层配置共性,在子项目级配置差异: build.gradle(顶级)
project.evaluationDependsOnChildren()
),但我建议只在万不得已的情况下使用它。相反,我将在顶层配置共性,在子项目级配置差异:
build.gradle(顶级):
build.gradle(子项目):
避免重复的另一种方法是将常见代码分解成单独的脚本,并让子项目将其包含在
apply from:
中。当逻辑仅适用于选定的子项目时,或者在需要避免父项目和子项目之间耦合的情况下(例如,当使用Gradle的新功能时),这是一个很好的选择。谢谢,我最终将通用配置移到了顶层,并将特定于子项目的配置移到了子项目。效果很好。
subprojects {
myTask {
prop = valueDefinedInChild
}
}
valueDefinedInChild = 'someValue'
subprojects {
task myTask { // add task to all subprojects
// common configuration goes here
}
}
myTask {
prop = 'someValue'
}