gpt4 book ai didi

spring-boot - 如何防止line在build.gradle中运行?

转载 作者:行者123 更新时间:2023-12-02 20:44:13 25 4
gpt4 key购买 nike

我目前有一个gradle应用程序,并且正在使用gradle-docker插件。

我的build.gradle文件中有两个Docker任务,每个任务都应该为相应的Container Registry(由project.group指定)标记一个镜像:

task buildDockerSandbox(type: Docker) {
project.group = 'gcr.io/sandbox'
baseImage "java:8"
runCommand("mkdir a")
addFile("a.jar", "a/")
workingDir("/a")
entryPoint(["java", "-Dspring.profiles.active=sandbox", "-jar", "a.jar"])
}

task buildDockerProd(type: Docker) {
project.group = 'gcr.io/prod'
baseImage "java:8"
runCommand("mkdir b")
addFile("b.jar", "b/")
workingDir("/b")
entryPoint(["java", "-Dspring.profiles.active=prod", "-jar", "b.jar"])
}


但是,当我运行“gradle buildDockerSandbox”时,在运行buildDockerSandbox任务时,将注册“project.group ='gcr.io/prod'”行,从而导致为错误的环境标记镜像。

为了防止这种情况,我需要禁用不运行“project.group = {group}”行的任务,以防止这种情况,但是不知道如何。

预期结果:运行“gradle buildDockerSandbox”将镜像标记为“gcr.io/sandbox:{applicationName}”,运行“gradle buildDockerProd”将镜像标记为“gcr.io/prod:{applicationName}”。

实际结果:这两个任务都将图像标记为“gcr.io/prod:{applicationName}”

最佳答案

您在任务结束处添加的内容将在Gradle配置您的任务时应用,而不是在实际运行它们时应用。因此,在这种情况下,您要定义两个任务,并且它们都设置了一个共享属性project.group。因此,无论您实际上打算运行哪个任务,最后配置的任何任务都将“获胜”。

有许多Gradle可用的Docker插件,在我看来,就像您使用Transmode中的一个。从文档看来,您无法在同一Gradle项目中使用不同的Docker仓库名称构建两个镜像。因此,我想说的是您的选择是在镜像创建后自行设置名称(例如在doLast块中),将其拆分为两个Gradle项目,或者使用另一个更可定制的Docker插件。 bmuschko中的一个可能是使用最广泛且功能丰富的。

关于spring-boot - 如何防止line在build.gradle中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com