自定义gradle任务类:是否有“post-construction”钩子?

时间:2013-10-01 01:12:52

标签: gradle build.gradle

自定义任务类是否有某种“post-construction hook”,所以我可以在特定于类的逻辑中调用inputsoutputs之类的方法?

假设我正在定义一个自定义的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()功能,而不是重写部分功能。但我无法弄清楚从哪里调用它。

2 个答案:

答案 0 :(得分:2)

如有必要,可以在任务类的零参数构造函数中执行这些初始化。默认属性值通常由插件设置(特别是如果默认值取决于来自任务类外部的信息)。输入/输出注释应优先于输入/输出API。 (后者存在于没有自己的任务类的临时任务中。)

答案 1 :(得分:0)

我需要完全相同的东西,根据我的理解,答案或多或少 - 不,这是目前无法实现的。

请参阅https://discuss.gradle.org/t/custom-task-with-extensions/12491