Maven父子pom自增版本使用Azure devops

Maven parent and child pom auto-increment version using Azure devops

我在 JHipster 上构建了多个微服务,这些微服务过去是使用 Maven 单独构建的。现在我们有一个父 pom,它将具有所有 API 的所有公共依赖项,可以多次构建,并多次部署父 pom 的相同版本。所有 API 都将使用它作为父 pom。 问题是我们在构建过程中使用 Azure DevOps,其中常见的工件被发送到 Azure Artifacts,并且版本是不可变的。因此,如果要构建此父 pom 并将其打包到 Azure Artifacts 中,我需要弄清楚以下内容。

  1. 如何根据所做的更改自动增加或不自动增加父 pom 的版本。 ( 为此,我尝试使用 maven-release-plugin 并自动增加版本,但如果有任何最佳实践,请告诉我,我现在使用默认值。计划在子 pom 中也使用相同的方法,但不确定这是否是正确的方法)
  2. 如何确保使用该父 pom 的子项目能够在发布期间自动增加版本。

P.S:早些时候我们遇到了一个问题,即公共存储库中的任何更改都需要开发人员在构建之前手动更改 pom 的版本,因为 Azure Artifacts 不允许相同的版本构建并部署到 Artifacts。

您可以尝试在构建管道期间为父 pom 和每个子 pom 的版本生成一个变量 运行。例如:PARENT_PACKAGE_VERSIONCHILD_01_PACKAGE_VERSIONCHILD_02_PACKAGE_VERSION , ...

变量可以由一些数量和变量组合(包括自定义变量,predefined variables and some expressions)。这样,你几乎可以自由设置版本号。

pom.xml文件中,您可以在版本字段中填写变量名。

在管道中,设置一个shell脚本,使用if条件判断是否改变变量的值。 然后用pom.xml文件中的实际值替换变量名。

例如:

sed -i 's/PACKAGE_VERSION/$(PACKAGE_VERSION)/g' pom.xml

完成上述步骤后,构建并发布 Maven 包。

对于父pom的版本,为了避免向Azure Artifacts发布相同版本号导致的错误,可以设置多节点的版本号,例如<MajorVersion>.<MinorVersion>.<BatchVersion>MajorVersionMinorVersion 可能不会经常更改。 BatchVersion 可以在父包 and/or 子包中发生任何更新时更改或自动增加。