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变量是否不为空:

// ...

@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任务输入

于 2017-01-10T10:15:20.147 回答