【问题标题】:Moving Jib configuration of one module into a new module, to refactor multi-module gradle project将一个模块的jib配置移到新模块中,重构多模块gradle项目
【发布时间】: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 配置。

有人可以建议如何实现这一目标吗?

【问题讨论】:

    标签: java gradle multi-module jib


    【解决方案1】:

    在 Gradle 上,有很多方法可以实现您想要的任何目标。我的一个想法是为以下build.gradle 创建一个新模块(比如jibconf)。

    ['jib', 'jibDockerBuild', 'jibBuildTar'].each { jibTaskName ->
      task "${jibTaskName}Webapp" {
        doFirst {
          project(':webapp').jib {
            to.image = 'jib-webapp'
            // and more ....
          }
        }
        finalizedBy ":webapp:$jibTaskName"
      }
    
      task "${jibTaskName}App" {
        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("${jibTaskName}Webapp") { ...
    

    【讨论】:

    • 我知道这不是 Jib 的问题,感谢您的及时回答。
    猜你喜欢
    • 2021-03-23
    • 2021-10-10
    • 2021-11-20
    • 1970-01-01
    • 2012-02-19
    • 2020-01-26
    • 1970-01-01
    • 2014-03-03
    • 2020-03-01
    相关资源
    最近更新 更多