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

标签 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中定义的属性。

最佳答案

这取决于插件是否支持在同一项目中构建多个Hadoop应用程序。如果插件仅提供一个扩展名E(而不是扩展容器),那么您仍然很有可能可以声明与B类型相同的其他任务并直接配置它们,而不是通过E进行配置。如果B的任务类型直接访问E(不应访问)而不是公开其自己的配置属性,则您可能不得不切换到多项目构建,或者诉诸于某些丑陋的方法,例如根据是否有条件来配置E A1A2将被执行。

关于gradle - 如何编写gradle脚本,其中两个任务具有相同的依赖关系但配置不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27456212/

相关文章:

android - 如何加速 Android Studio 2.3 或 3?

java - 在 Eclipse 中创建 Gradle 项目卡住了

android - 无法签署发布 APK - :app:shrinkReleaseMultiDexComponents FAILED

maven - Maven插件,ant任务或gradle插件,用于检查是否已安装rpm

android - 使用 gradle 导入模块时使用模块的 packackingOptions

java - 无法应用插件[class 'org.gradle.api.plugins.scala.ScalaBasePlugin']:Gradle v2.13

android - 图像裁剪器问题

android - 任务 ':app:checkDebugAarMetadata set targetSdkVersion 30 and compileSdkVersion 30 执行失败

android-studio - Gradle 项目刷新失败错误

eclipse - gradle ide eclipse 插件导入 gradle 项目构建模型导致 UnsatisfiedLinkError : net