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