试图了解最简单的Gradle插件

时间:2017-10-17 10:40:51

标签: gradle groovy 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') {...}?它看起来像没有返回类型的方法声明,或者像带有附加括号的方法调用......这个构造是什么?
  2. 什么是doLast {...},它来自哪里?无论如何,语法模式是什么......一些关键字后跟括号。我在Groovy syntax页面中找不到类似的内容,其中主要包含使用${}或使用括号定义类或方法的示例。

1 个答案:

答案 0 :(得分:2)

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

例如

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

等于

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

这里是指向两种方法的javadocs的链接

  1. Project.task(String, Closure)

  2. Task.doLast(Closure)