如何在CI构建中更改POM版本?

pau*_*aul 3 maven gitlab gitlab-ci

我可能完全错误地解决了这个问题,但是这里......

我们希望使用 Gitlab 和 Nexus 实现development-> releases/x.y.z->master工作流程。这些工件应分别标记为x.y.z-SNAPSHOTx.y.z-rcx.y.z

在 中ci-build.yml,我尝试根据当前分支修改 POM,以便创建正确标记的工件。问题显然是,更改将比当前构建提交提前一次提交,并且构建中使用的 POM 具有原始版本。

例如

  • 发布分支是从开发创建的
  • POM 有 2.3.4-SNAPSHOT,在 期间ci-build,修改为 2.3.4-rc 并提交并推送到 git
  • 执行后续的构建和部署操作,但这会将 2.3.4-SNAPSHOT 包部署到 Nexus,而不是所需的 2.3.4-rc

我的问题如下:

我可以修改 POM 并在后续所有阶段使用更新后的 POM 吗ci-build

(我不认为这是正确的程序,但这是我的团队领导所要求的,所以我正在尝试实施它......)

pau*_*aul 6

我的解决方案是完全避免提交并使用https://maven.apache.org/maven-ci-friend.html中描述的策略。

这定义了一个新属性 ,revision可以使用 Maven 参数 来设置它-Drevision=x.y.z-SUFFIX。POM 版本是从此变量设置的。

build-ci 读取project/properties/revision并提取 POM 版本,并根据当前分支适当更改版本。

使用这种方法,我可以实现所需的结果,而无需添加任何额外的提交,因为 Maven 可以使用外部提供的版本来执行其目标。