自定义任务类是否有某种“post-construction hook”,所以我可以在特定于类的逻辑中调用inputs
和outputs
之类的方法?
假设我正在定义一个自定义的Gradle任务类,如
class ExampleTask extends DefaultTask {
def exFile = null
}
现在,我想通过
实例化它task('ex', type: ExampleTask) {
exFile = file("some-example.json")
}
...我想在实例上自动运行等效的inputs(exFile)
。逻辑在哪里处理这种配置?我看到我可以在自定义任务类中的方法上添加@InputFiles
装饰器,如
@InputFiles
def getFiles(){
file(exFile)
}
......但这似乎不太一般。我宁愿使用现有的inputs()
功能,而不是重写部分功能。但我无法弄清楚从哪里调用它。
答案 0 :(得分:2)
如有必要,可以在任务类的零参数构造函数中执行这些初始化。默认属性值通常由插件设置(特别是如果默认值取决于来自任务类外部的信息)。输入/输出注释应优先于输入/输出API。 (后者存在于没有自己的任务类的临时任务中。)
答案 1 :(得分:0)
我需要完全相同的东西,根据我的理解,答案或多或少 - 不,这是目前无法实现的。
请参阅https://discuss.gradle.org/t/custom-task-with-extensions/12491