2017-09-20 8 views
0

Groovyについては非常に熱心ですが、まもなく使用を開始したばかりで、言語構文POVからGradleを理解したいと考えています。GradleのGroovy構文の例

私の例では、Gradleのタスクについてです:

task hello(type: GreetingTask) 

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

taskメソッドは、String名と閉鎖を受け付けます。どのようにhello(type: GreetingTask)突然の文字列になることができますか? typeが名前付きパラメータの場合、GreetingTaskは何を意味しますか? GreetingTask.classのショートカットですか?どうすればhello関数/クロージャは文字列を返しますか?

+0

Gradleビルドスクリプトは、純粋なGroovyだけでなく、DSLです。 –

+0

はい、しかし、それはグルーヴィー構文に準拠しているようです。私が他に何を求めているかは別として、これまでのgroovy構文POVからは意味をなさない。 – yuranos87

+0

他に何が言いたいのかわかりません... Gradleビルドスクリプトは純粋なGroovyだけでなく、DSLです。 –

答えて

3

ティムが指摘したように、グラデーションスクリプトは純粋なグルーヴィーではない特定のDSLで書かれています。タスクの作成にあたっては、タスクを作成するために使用されるメソッドを見ることができます。そのメソッドは、タスクを作成するために呼び出されます。もちろん、この電話はTaskContainerに委任されていますが、scopesと前述のDSLのためにproject.tasks.taskに電話する必要はありません。さて、あなたが提供したコードがタスクのインスタンスを作成するのはどうですか? thisの変圧器。 .classグルーヴィーを省略することが可能で、クラスが呼ばれたとき、

type: GreetingTaskがはい、([type: reetingTask]のそれの同等)Mapのインスタンスであると)、私がもしこれまで十分であるから、この答えは、しかし、それは少し役に立てば幸いことを知っています。