2017-09-20 42 views
0

我对Groovy非常热衷,但最近刚开始使用它,并希望从语言语法POV中了解Gradle。Gradle任务示例的Groovy语法

我的例子是关于摇篮任务:

task hello(type: GreetingTask) 

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

task方法接受一个字符串名称和闭幕。 hello(type: GreetingTask)怎么可能突然变成一串?如果type是一个命名参数,GreetingTask是什么意思?它是GreetingTask.class的快捷方式吗? hello函数/ closure怎么返回一个String?

+0

Gradle构建脚本是一个DSL,不仅仅是纯粹的groovy –

+0

是的,但它似乎符合groovy语法。除了我所问的所有其他从Groovy语法POV到目前为止的意义。 – yuranos87

+0

我不知道还有什么可说的... Gradle构建脚本是一种DSL,不仅仅是纯粹的groovy ... –

回答

3

正如Tim指出的那样,gradle脚本是用特定的DSL编写的,而不是纯粹的groovy。当涉及到创建任务here时,您可以看到用于创建任务的方法,并且将在调试时调用它们来创建任务。当然,在这种情况下,这些呼叫被委托给TaskContainer,但由于scopes和DSL提到,因此不需要拨打project.tasks.task。现在,它提供的代码如何创建一个任务实例?用this变压器。我知道这个答案,如果远远不够,但希望它有助于一点;)

type: GreetingTaskMap一个实例(它的等效[type: reetingTask]),是的,在常规.class可以省略当一个类被称为。