为什么 gradle 运行 gradle.build 中的每个任务

Yoa*_*nda 1 gradle build.gradle

我对 gradle 很陌生,有一个基本问题。

当我将自定义任务添加到 gradle.build 文件并调用“gradlw build”或“gradle clean”或任何其他 gradle 命令时,它会自动运行我的自定义任务。

gradle 中就是这样工作的吗?运行构建文件中的每个任务?有没有办法仅在我需要手动运行任务时才运行它?

JB *_*zet 5

task foo {
  println 'hello'
}
Run Code Online (Sandbox Code Playgroud)

这会创建一个任务,并在配置任务期间告诉 gradle 执行println 'hello'. 每个任务都会在每次构建时进行配置,因为 gradle 需要知道它的配置是什么,才能知道该任务是否必须执行。

task foo << {
  println 'hello'
}
Run Code Online (Sandbox Code Playgroud)

这会创建一个任务,并在任务执行println 'hello'过程中告诉 gradle 执行. 因此,仅当您明确选择运行该任务foo或依赖于foo.

它相当于

task foo {
  doLast {
    println 'hello'
  }
}
Run Code Online (Sandbox Code Playgroud)

您选择不发布您的代码,可能是假设 gradle 的行为很奇怪,并且您的代码与该问题无关。所以这只是一个猜测,但您可能使用了第一个错误的代码,而不是第二个正确的代码。