Verstehen der Groovy-Syntax in einer Gradle-Aufgabendefinition

Ich bin neu bei Gradle and Groovy und versuche zu verstehen, was auf der Ebene von Groovy passiert, wenn eine Gradle-Aufgabe definiert wird.

task hello  { 
   println "configuring task hello" 
   doLast {
     println "hello there" 
   }
}

urch das Lesen des Buches "Gradle In Action" weiß ich, dass dastask hello {} ist wirklich ein Aufruf an dietask() Methode der groovigenProject Schnittstelle. Auf Seite 77 wird gezeigt, dass es auf dem @ 4 Methoden gibt, die Task genannt werdeProject interface

task(args: Map<String,?>, name:String)
task(args: Map<String,?>, name:String, c:Closure)
task(name: String)
task(name: String, c:Closure)

Ich verstehe, dass das{} ist der Verschlusskörper.

Was ich nicht verstehe, ist, wie groovy interpretierthello imtask hello { } gemäßhttps: //stackoverflow.com/a/25592665/43831 Es gibt ein fetziges Compiler-Plugin, das @ konvertiertask hello { }intask('hello', { })

Meine Fragen

Wo finde ich Informationen zum Gradle Groovy Compiler-Plugin, mit dem die Konvertierung durchgeführt wird?

Ist die Behauptung, dass Gradle-Skripte technisch inkorrekte Groovy-Programme sind, da Gradle die Groovy-Programmiersprache irgendwie erweitert?

Gibt es eine Möglichkeit, das @ zu bekommgradle Befehl zum Ausdrucken des Groovy-Basiscodes, der generiert wird, nachdem das Compiler-Plugin ausgeführt wurde?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage