将一个模块的jib配置移到新模块中,重构多模块gradle项目
Posted
技术标签:
【中文标题】将一个模块的jib配置移到新模块中,重构多模块gradle项目【英文标题】:Moving Jib configuration of one module into a new module, to refactor multi-module gradle project 【发布时间】:2021-11-18 01:55:34 【问题描述】:我有一个多模块 gradle 项目,其中一个模块是 webapp。我在 webapp build.gradle 文件中添加了 Jib 配置以生成容器图像。 同样,我有一些用于命令行应用程序的模块,并且我使用 Jib jar config 来创建容器映像。
我想在新模块中移动 Jib 特定配置以整理 webapp/app build.gradle 文件,并希望通过创建新模块(比如 ':container:tomcat'、':container:app1')和设置来实现这一点为 webapp/app 项目设置任务(或其他东西)在此处设置 Jib 配置。我不确定我需要调用什么 gradle api 才能达到同样的效果? 我知道我可以从新模块 build.gradle 文件中访问 webapp/app 模块,但不确定如何在那里设置 Jib 配置。
有人可以建议如何实现这一目标吗?
【问题讨论】:
【参考方案1】:在 Gradle 上,有很多方法可以实现您想要的任何目标。我的一个想法是为以下build.gradle
创建一个新模块(比如jibconf
)。
['jib', 'jibDockerBuild', 'jibBuildTar'].each jibTaskName ->
task "$jibTaskNameWebapp"
doFirst
project(':webapp').jib
to.image = 'jib-webapp'
// and more ....
finalizedBy ":webapp:$jibTaskName"
task "$jibTaskNameApp"
doFirst
project(':app').jib
to.image = 'jib-app'
// and more ...
finalizedBy ":app:$jibTaskName"
然后在根目录下运行./gradelw jibW
或./gradle jibDBW
会构建一个webapp 镜像,而./gradlew jibA
或./gradlew jibDBA
会构建一个app 镜像。
请注意,建议注册一个任务而不是直接创建它,所以我实际上会这样做:
tasks.register("$jibTaskNameWebapp") ...
【讨论】:
我知道这不是 Jib 的问题,感谢您的及时回答。以上是关于将一个模块的jib配置移到新模块中,重构多模块gradle项目的主要内容,如果未能解决你的问题,请参考以下文章