Gradle 任务 vs 插件 vs 任务类型?

Gradle task vs plugin vs task type?

apply plugin: 'war'

war {
    ...
}

据我了解: 有个gradle war plugin which I get available from the apply plugin: 'war' line, that allows me to use the war task declared via the war { ... } which is of type war?

"apply" 下方的 "war" 块没有定义任务,它只是插件使用的配置块。

如果您应用 Gradle War 插件,将自动创建一个名为 war 的任务。当您在构建脚本中引用 war { ... } 时,您实际上是在闭包的帮助下配置 war 任务实例。

war {
    baseName = 'example'
}

做同样的事情
war.baseName = 'example'

闭包语法的好处是可以通过多条语句来配置任务实例。它也变得更具可读性,看起来更像 DSL。

名为 war 的任务的实际类型是 War。您始终可以通过 gradle help --task <task-name>.

从命令行中找出任务类型

您还可以获得有关构建脚本中变量类型的一些信息:

task printType {
    doLast {
        println war
    }
}

执行任务会打印出以下内容:

$ gradle printType
:printType
task ':war'