build - Gradle 的术语评估和执行之间的区别

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

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

最佳答案

正如您在文档中看到的,分为三个阶段:初始化、配置和执行。每个步骤都从根项目遍历到子项目以进行多项目构建。当您想要基于子项目中的配置来配置特定项目时,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"
      }
    }
  }
}

https://stackoverflow.com/questions/16070567/

相关文章:

java - 创建新的 ClassLoader 以重新加载 Class

unit-testing - 如何从 Go 测试覆盖中忽略生成的文件

android - Gradle DSL 方法未找到 : "classpath()"

android - 如何引用公共(public)目录(不是库)中的外部 jar 文件来使用 ant

tfs - 让 TFS 将变更集放入程序集版本中

build - 了解 CMake 背后的目的

gradle - 谷歌构建Android的Gradle插件源代码

visual-studio-2010 - VS2010 : Exclude a project fr

c# - 如何在夜间构建期间自动设置程序集版本?

javascript - 为 JavaScript 构建过程工具