gradle在父任务中使用在子任务中定义的变量

gradle在父任务中使用在子任务中定义的变量,gradle,Gradle,我有一个多项目渐变构建,我在父构建中声明一个任务,该任务使用在子项目中声明的变量(该值可以根据子项目而更改)。然而,我在配置阶段得到一个错误,变量不存在。我的设置看起来像 build.gradle(顶级) 然后 build.gradle(子项目) 有没有正确的方法可以做到这一点?有一种方法可以做到这一点(project.evaluationDependsOnChildren()),但我建议只在万不得已的情况下使用它。相反,我将在顶层配置共性,在子项目级配置差异: build.gradle(顶级)

我有一个多项目渐变构建,我在父构建中声明一个任务,该任务使用在子项目中声明的变量(该值可以根据子项目而更改)。然而,我在配置阶段得到一个错误,变量不存在。我的设置看起来像

build.gradle(顶级)

然后

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'
}