【发布时间】:2023-03-14 14:45:02
【问题描述】:
我已经配置了一个 Jenkins 作业来构建一个 Maven 3 项目并启用了“Maven 发布构建”插件,还添加了一个构建后操作来将工件部署到 Nexus 存储库。
但是,我不希望部署工件,除非用户通过单击“执行 Maven 发布”链接而不是“立即构建”按钮来启动构建。当单击“立即构建”时,我只想要一个不会在任何地方部署的快照构建。
我从文档中了解到,我可以使用名为 IS_M2RELEASEBUILD 的环境变量来控制此行为。当通过“执行 Maven 发布”链接启动构建时,此环境变量由 M2 发布插件设置为 true。但是后期构建操作完全忽略了这一点。
我正在使用 Jenkins LTS 1.509.3 和 Maven 3.0.5。
更新:请注意,我不是在寻找使用 POM 中的 Maven 发布插件的解决方法。我的目标是创建一个单一的 Jenkins 作业,充当由签入触发的 CI 构建(不部署快照),并能够使用相同的作业使用 Jenkins M2 Release 插件执行发布构建。
【问题讨论】:
-
将版本改为SNAPSHOT并定义快照库如何?
-
@AbhijithNagarajan 我看不到有 2 个构建后操作(一个用于发布,一个用于快照)的方法,我想我会遇到类似的问题找到有条件执行一个或另一个。此外,我不想实际部署快照工件。
-
@AlexanderKudrevatykh 如果我要使用 Maven 部署工件,那么我需要两份工作。一个用于发布构建,一个用于 CI 构建。我试图避免为每个独立版本化和发布的组件维护两个工作。
-
你不能将部署目标添加到发布目标中吗?我猜它只有在发布时才会被执行。
-
使用 pom 中的配置不是“解决方法”;当 Jenkins 作业执行“发布:准备发布:执行”操作时,您正在隐式使用 maven-release-plugin。 “这个插件允许您使用 Jenkins 中的 maven-release-plugin 执行发布构建。”如果您真的不想在 pom 中执行此操作,您可能只需将
-Dgoals=deploy附加到“发布目标和选项”部分,但我想不出一个不将其放入 pom 的理由。在您调用 jenkins 工作中的一个发布目标之前,它不会产生任何影响。
标签: maven jenkins maven-release-plugin