2017-01-10 3 views
2

Wie kann ich eine optionale Eigenschaft für Aufgabe bereitstellen?Gradle optional @Input

class CustomTask extends DefaultTask { 

    @Input 
    Closure preconfig 

    // ...  
} 

Auf diese Weise Benutzer verpflichtet preconfig Schließung als Parameter zur Verfügung zu stellen, wenn Aufgabe mit CustomTask Typ definieren.

Wie kann ich einen deklarativen Weg als das Definieren von Methoden zum Festlegen von Eigenschaften erreichen?

class CustomTask extends DefaultTask { 

    @Input 
    Closure preconfig 

    def preconfig(Closure c){ 
     this.preconfig = c 
    } 

    // ... 
} 

Antwort

0

Eigentlich fand ich eine Lösung Standardwert auf die @Input Felder zuweisen.

Beispiel:

class CustomTask extends DefaultTask { 

    @Input 
    Closure preconfig = null // or { } <- empty closure 

    // ...  
} 

Und dann überprüfen, ob die @Input Variable nicht null ist:

// ... 

@TaskAction 
def action(){ 
    if (preconfig) { preconfig() } 
} 

// ... 

Auch ist es nützlich Anmerkung @Optional:

class CustomTask extends DefaultTask { 

    @Input @Optional 
    Closure preconfig 

    // ...  
} 
1
class CustomTask extends DefaultTask { 
    void setPreconfig(Closure c) { 
     inputs.property("preconfig", c) 
    } 
    ... 
} 

@see TaskInputs

+0

Nun, ich auf diese Weise müssen auch separate Methode deklarieren –