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

标签 build gradle execution evaluation

我是 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"
      }
    }
  }
}

关于build - Gradle 的术语评估和执行之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070567/

相关文章:

java - 如何在 macOS 上为 IntelliJ 项目安装 Google OR-Tools

mysql - 有没有比我的笔记本电脑执行mysql更快的地方?

msbuild - 为什么我的 .wpp.targets 文件没有应用到我的构建服务器上?

android - 如何为 Cordova 设置目标 Android SDK?

gradle - 为所有java子项目定义一个sourceset

c++ - SIGSEGV : Program doesn't execute sequentially

linux - xargs - 程序是循环运行还是重新执行

java - 使用 EAS 构建构建应用程序时出现 "expo-location:compileReleaseJavaWithJavac"错误

java - (Gradle) 为新源集运行 testNG 测试任务时出现 ClassNotFoundException

java - 使用 gradle 时找不到 Protobuf 生成的类