试图理解最简单的 Gradle 插件

Trying to understand the most simple Gradle plugin

作为 Gradle 和 Groovy 的新手,我很难理解我在 Writing a simple plugin 教程中遇到的以下代码:

class GreetingPlugin implements Plugin<Project> {
    void apply(Project project) {
        project.task('hello') {
            doLast {
                println 'Hello from the GreetingPlugin'
            }
        }
    }
}
  1. 什么是project.task('hello') {...}?它看起来像一个没有 return 类型的方法声明,或者像一个带有额外括号的方法调用......这是什么构造?
  2. 什么是doLast {...},它起源于哪里?无论如何,这是什么语法模式......一些关键字后跟方括号。我在 Groovy syntax 页面中找不到类似的内容,该页面主要包含使用 ${} 或使用方括号定义 class 或方法的示例。

在groovy中,如果方法的最后一个参数是闭包,可以放在圆括号外。

例如

project.task('foo', {
    doStuff()
})

相当于

project.task('foo') {
    doStuff()
}

这是这两种方法的 javadoc 的链接

  1. Project.task(String, Closure)

  2. Task.doLast(Closure)