Gradle可选@Input

时间:2017-01-10 10:05:21

标签: gradle build.gradle gradle-plugin gradle-task

如何为任务提供可选属性?

class CustomTask extends DefaultTask {

    @Input
    Closure preconfig

    // ...    
}

这种方式使用户在使用preconfig类型定义任务时,必须提供CustomTask闭包作为参数。

除了定义设置属性的方法之外,我如何实现声明方式?

class CustomTask extends DefaultTask {

    @Input
    Closure preconfig

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

    // ...   
}

2 个答案:

答案 0 :(得分:4)

实际上,我找到了一个为Ssl3字段分配默认值的解决方案。

示例:

@Input

然后检查class CustomTask extends DefaultTask { @Input Closure preconfig = null // or { } <- empty closure // ... } 变量是否为空:

@Input

还有一个有用的注释@Optional

// ...

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

// ...

答案 1 :(得分:1)

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

@see TaskInputs