7

我已经配置了一个 Jenkins 作业来构建一个 Maven 3 项目并启用了“Maven 发布构建”插件,还添加了一个构建后操作来将工件部署到 Nexus 存储库。

但是,除非用户通过单击“Perform Maven Release”链接而不是“立即构建”按钮来启动构建,否则我不希望部署工件。当单击“立即构建”时,我只想要一个不会在任何地方部署的快照构建。

我从文档中了解到,我可以使用一个名为 IS_M2RELEASEBUILD 的环境变量来控制这种行为。当通过“执行 Maven 发布”链接启动构建时,M2 发布插件将此环境变量设置为 true。但是后期构建操作完全忽略了这一点。

詹金斯设置

我正在使用 Jenkins LTS 1.509.3 和 Maven 3.0.5。

更新:请注意,我不是在寻找在 POM 中使用 Maven 发布插件的解决方法。我的目标是创建一个单一的 Jenkins 作业,充当由签入触发的 CI 构建(不部署快照),并能够使用相同的作业使用 Jenkins M2 发布插件执行发布构建。

4

3 回答 3

2

看看灵活的发布插件

我认为您可以根据所需的模式轻松检查您的环境变量

在此处输入图像描述

并触发正确的构建后操作(抱歉,没有部署到 maven)

在此处输入图像描述

于 2013-09-30T15:58:27.627 回答
1

My Comment to the question is apparently the answer. ;)

can't you add the deploy goal to the release goals? I would guess that it will then only be executed, if it is an release.

于 2013-10-09T12:44:08.487 回答
1

如果您将部署操作添加到 Maven 发布目标,那么您不需要在 Jenkins 作业中执行单独的步骤。这些目标仅在 release:perform 时执行。就像是:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <configuration>
    <goals>deploy</goals>
  </configuration>
</plugin>

Peter Schuetze 在评论中回答了这个问题,并且可能应该发布这个答案以获得赏金。

于 2013-10-05T06:12:08.597 回答