我是Gradle构建工具的新手,现在我正在阅读用户指南,但无法完全理解评估和执行阶段之间的区别。
在配置阶段,项目对象已配置且DAG已创建,但我们有 afterEvaluate ,那么在此处评估什么?评估任务依赖性还是什么?
答案 0 :(得分:16)
正如您在文档中看到的,有三个阶段:初始化,配置和执行。每个步骤都从根项目遍历到子项目,以进行多项目构建。当您要根据子项目中的配置配置特定项目时,afterEvaluate在多项目构建的根gradle文件中很有用。
假设您要为已定义特定插件的所有子项目添加任务。如果您添加到根项目:
subprojects {subProject ->
if ( subProject.plugins.hasPlugin('myplugin')){
subProject.task('newTask')<<{
println "This is a new task"
}
}
}
由于在子项目之前配置了根项目,因此永远不会添加此任务。 添加afterEvaluate将为您解决此问题:
subprojects {subProject ->
afterEvaluate{
if ( subProject.plugins.hasPlugin('myplugin')){
subProject.task('newTask')<<{
println "This is a new task"
}
}
}
}