将一个模块的 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") { ...
我有一个多模块 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") { ...