所以,假设我有这种项目结构:
Root
projA
projA1-api
projA2-core
projA3-main
projB
projB1-api
projB2-core
projB3-main
projC
projC1-api
projC2-core
projC3-main
and so on...
一些子项目(以“ -main ”结尾的子项目)已经应用war
了spring boot
插件,根 build.gradle 文件没有。这意味着项目projA3-main、projB3-main和projC3-main具有bootWar
禁用该任务的war
任务。
现在,问题在于我们的詹金斯管道通过执行gradle war
命令来构建战争,这很糟糕并且无法更改。
所以,我想做的是通过将它设置为依赖于任务来修改包含war插件的每个子项目中的warbootWar
任务。我可以通过添加war.dependsOn bootWar
到子项目的build.gradle
文件中来做到这一点并且可以工作,但我想将该代码提取到 rootbuild.gradle
中。
另外,我希望该任务还执行在根目录中定义war
的另一个任务(我们称之为),它只是将内容打印到某个文件中。customPrintTask
build.gradle
总结一下:
根 build.gradle 没有、war、bootWar 或 Spring Boot 插件,但有 customPrintTask 任务
“ -main”子项目有bootWar和spring boot插件,也有war插件,但是因为我用的是Spring Boot 2+ gradle插件,war任务不会生成war。
基本上,我想要这样的东西:
allprojects {
if (project.plugins.hasPlugin("war")) {
war.dependsOn bootWar
war.finalizedBy customPrintTask
}
}
我希望这是有道理的。