2017-01-10 8 views
2

タスクにオプションのプロパティを提供するにはどうすればよいですか?オプションのギャンブル@Input

class CustomTask extends DefaultTask { 

    @Input 
    Closure preconfig 

    // ...  
} 

この方法はCustomTaskタイプでタスクを定義する際のパラメータとしてpreconfig閉鎖を提供するために、ユーザーを義務付け。

プロパティを設定するメソッドを定義する以外に宣言的な方法を実現するにはどうすればよいですか?

class CustomTask extends DefaultTask { 

    @Input 
    Closure preconfig 

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

    // ... 
} 

答えて

0

実は、@Inputフィールドにデフォルト値を割り当てることで解決策を見つけました。

例:その後、

class CustomTask extends DefaultTask { 

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

    // ...  
} 

そして@Input変数がnullでないかどうかを確認:

// ... 

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

// ... 

また、有用な注釈@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

まあI別のメソッドを宣言しなければならない –