将一个模块的 Jib 配置移动到一个新模块中,以重构多模块 gradle 项目

Moving Jib configuration of one module into a new module, to refactor multi-module gradle project

我有一个多模块 gradle 项目,其中一个模块是 Web 应用程序。我在 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 配置。

有人可以建议如何实现吗?

在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 构建一个应用程序镜像。

请注意,建议注册任务而不是直接创建任务,所以我实际上会这样做:

  tasks.register("${jibTaskName}Webapp") { ...