2016-06-07 10 views
3

Ich verstehe nicht, warum wir auf den Namen gradle Aufgabe keine Anführungszeichen hinzufügen müssen, wenn wir es erklären mag:warum können Angebote in Namen von gradle Aufgaben weggelassen werden

task hello (type : DefaultTask) { 
} 

I‘ Ich habe es in einem groovigen Projekt versucht und festgestellt, dass es illegal ist, wie groß es funktioniert. Und ich verstehe den obigen Ausdruck weder, warum wir (type : DefaultTask) hinzufügen können, wie können wir es mit grooviger Grammatik analysieren?

+3

Mögliche Duplikat [das Verständnis der groovy Syntax in eine Großaufgabetaskdefinition] (https://stackoverflow.com/questions/27584463/understanding-the-groovy-syntax-in-a-gradle-task-definition) – tkruse

Antwort

2

Als ein Beispiel in einer GroovyConsole runnable Form, können Sie ein Stück Code definieren thusly:

// Set the base class for our DSL 

@BaseScript(MyDSL) 
import groovy.transform.BaseScript 

// Something to deal with people 
class Person { 
    String name 
    Closure method 
    String toString() { "$name" } 
    Person(String name, Closure cl) { 
     this.name = name 
     this.method = cl 
     this.method.delegate = this 
    } 
    def greet(String greeting) { 
     println "$greeting $name" 
    } 
} 

// and our base DSL class 

abstract class MyDSL extends Script { 
    def methodMissing(String name, args) { 
     return new Person(name, args[0]) 
    } 

    def person(Person p) { 
     p.method(p) 
    } 
} 

// Then our actual script 

person tim { 
    greet 'Hello' 
} 

Also, wenn das Skript an der Unterseite ausgeführt wird, druckt es Hello tim

Aber Davids nach stdout Antwort die richtige ist, ist dies nur zum Beispiel

See also here in the documentation for Groovy

1

Ein Gradle-Build-Skript ist eine Groovy-DSL-Anwendung. Durch sorgfältige Verwendung der Methoden "methodMissing" und "propertyMissing" ist alles möglich.

Ich erinnere mich nicht an den genauen Mechanismus um "Aufgabe". Ich denke, das wurde im Gradle-Forum (wahrscheinlich mehr als einmal) gefragt.

+0

Mechanismus kommentierte hier: https://stackoverflow.com/ Fragen/12326264 – tkruse

Verwandte Themen