将一个模块的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项目的主要内容,如果未能解决你的问题,请参考以下文章

maven上传源码到私服

常规功能和模块自定义系统 (cfcmms)—044模块导航功能的重构

重构 python 模块配置以避免相对导入

将模块重构为单独的文件时,Vuex 4模块不起作用

特定模块的 JMX spring 配置

网页搜索核心模块架构重构