5

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

class CustomTask extends DefaultTask {

    @Input
    Closure preconfig

    // ...    
}

preconfigこの方法では、タイプでタスクを定義するときに、クロージャーをパラメーターとして提供することがユーザーに義務付けられますCustomTask

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

class CustomTask extends DefaultTask {

    @Input
    Closure preconfig

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

    // ...   
}
4

2 に答える 2

7

実際、@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

    // ...    
}
于 2017-01-25T14:48:12.293 に答える
2
class CustomTask extends DefaultTask {
    void setPreconfig(Closure c) {
        inputs.property("preconfig", c)
    }
    ...
}

@see TaskInputs

于 2017-01-10T10:15:20.147 に答える