如何编写gradle脚本,其中两个任务具有相同的依赖关系但配置不同

时间:2014-12-13 06:31:21

标签: gradle

任务B是基本任务,使用扩展名E定义的配置。

任务A1依赖于任务B并具有一些配置E1。 任务A2还依赖于任务B并具有一些配置E2。

task B // it's a 3rd party task which uses the properties defined in E

E {
    // some configuration
}

task A1(dependsOn: B) {
    // do stuff
}

task A2(dependsOn: B) {
    // do stuff
}

如果我以上述方式定义它,A1和A2都使用相同的配置。但我想要的是A1和A2使用扩展名E定义的不同配置。任何建议?

==========更具体一点==========

Sync taskB = project.tasks.create("B", Sync)
taskB.description = XXX
taskB.group = XXX
task.with pluginExtension.XXX
taskB.doLast {
    // do stuff
}

那个插件中写的是什么,尽管我用这些名字代替了。任务B是动态创建的,并使用扩展名E中定义的属性。

1 个答案:

答案 0 :(得分:0)

这取决于插件是否支持在同一个项目中构建多个Hadoop应用程序。如果插件仅提供单个扩展名E(而不是扩展容器),则仍有可能声明与B相同类型的其他任务并直接配置它们而不是通过E。如果B的任务类型直接访问E(它不应该),而不是公开自己的配置属性,则可能需要切换到多项目构建,或者采用一些丑陋的黑客攻击例如根据是否要执行EA1来有条件地配置A2