19

我是 Gradle 构建工具的新手,现在我正在阅读用户指南,但无法完全理解评估和执行阶段之间的区别。

在配置阶段项目对象已配置并创建 DAG,但我们有afterEvaluate,那么这里的评估是什么?评估任务依赖关系还是什么?

4

1 回答 1

29

正如您在文档中看到的,共有三个阶段:初始化、配置和执行。每个步骤都从根项目遍历到子项目以进行多项目构建。当您想根据子项目中的配置来配置特定项目时,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"
      }
    }
  }
}
于 2013-04-19T11:09:55.063 回答