Gradle任务示例上的Groovy语法

时间:2017-09-20 09:29:16

标签: gradle groovy

我非常热衷于Groovy,但最近刚刚开始使用它,并希望从语言语法POV中理解Gradle。

我的例子是关于Gradle任务:

task hello(type: GreetingTask)

class GreetingTask extends DefaultTask {
    @TaskAction
    def greet() {
        println 'hello from GreetingTask'
    }
}

task方法接受String名称和Closure。 hello(type: GreetingTask)如何突然成为一个字符串?如果type是命名参数,那么GreetingTask是什么意思?它是GreetingTask.class的捷径吗?怎么来hello函数/闭包返回一个字符串?

1 个答案:

答案 0 :(得分:3)

Tim指出gradle脚本是用特定的DSL编写的,而不是纯粹的groovy。在创建任务here时,您可以看到用于创建任务的方法,并且可以调用它们来创建任务。当然,这个电话会被委托给TaskContainer,但由于scopes并提到了DSL,因此无需拨打project.tasks.task。现在,您提供的代码如何创建一个任务实例?使用this变换器。我知道这个答案远远不够,但希望它有所帮助;)

type: GreetingTaskMap的一个实例(它相当于[type: reetingTask]),是的,当提到一个类时,在groovy .class中可以省略