如何为任务提供可选属性?
class CustomTask extends DefaultTask {
@Input
Closure preconfig
// ...
}
这样,在使用
preconfig
类型定义任务时,用户有义务提供CustomTask
闭包作为参数。除了定义用于设置属性的方法外,如何实现声明性方法?
class CustomTask extends DefaultTask {
@Input
Closure preconfig
def preconfig(Closure c){
this.preconfig = c
}
// ...
}
最佳答案
实际上,我找到了将默认值分配给@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
// ...
}
关于Gradle可选的@Input,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41566160/