任务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中定义的属性。
最佳答案
这取决于插件是否支持在同一项目中构建多个Hadoop应用程序。如果插件仅提供一个扩展名E
(而不是扩展容器),那么您仍然很有可能可以声明与B
类型相同的其他任务并直接配置它们,而不是通过E
进行配置。如果B
的任务类型直接访问E
(不应访问)而不是公开其自己的配置属性,则您可能不得不切换到多项目构建,或者诉诸于某些丑陋的方法,例如根据是否有条件来配置E
A1
或A2
将被执行。
关于gradle - 如何编写gradle脚本,其中两个任务具有相同的依赖关系但配置不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27456212/