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 中,我需要弄清楚以下内容。
- 如何根据所做的更改自动增加或不自动增加父 pom 的版本。
( 为此,我尝试使用 maven-release-plugin 并自动增加版本,但如果有任何最佳实践,请告诉我,我现在使用默认值。计划在子 pom 中也使用相同的方法,但不确定这是否是正确的方法)
- 如何确保使用该父 pom 的子项目能够在发布期间自动增加版本。
P.S:早些时候我们遇到了一个问题,即公共存储库中的任何更改都需要开发人员在构建之前手动更改 pom 的版本,因为 Azure Artifacts 不允许相同的版本构建并部署到 Artifacts。
您可以尝试在构建管道期间为父 pom 和每个子 pom 的版本生成一个变量 运行。例如:PARENT_PACKAGE_VERSION
、CHILD_01_PACKAGE_VERSION
、CHILD_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>
。 MajorVersion 和 MinorVersion 可能不会经常更改。 BatchVersion 可以在父包 and/or 子包中发生任何更新时更改或自动增加。
我在 JHipster 上构建了多个微服务,这些微服务过去是使用 Maven 单独构建的。现在我们有一个父 pom,它将具有所有 API 的所有公共依赖项,可以多次构建,并多次部署父 pom 的相同版本。所有 API 都将使用它作为父 pom。 问题是我们在构建过程中使用 Azure DevOps,其中常见的工件被发送到 Azure Artifacts,并且版本是不可变的。因此,如果要构建此父 pom 并将其打包到 Azure Artifacts 中,我需要弄清楚以下内容。
- 如何根据所做的更改自动增加或不自动增加父 pom 的版本。 ( 为此,我尝试使用 maven-release-plugin 并自动增加版本,但如果有任何最佳实践,请告诉我,我现在使用默认值。计划在子 pom 中也使用相同的方法,但不确定这是否是正确的方法)
- 如何确保使用该父 pom 的子项目能够在发布期间自动增加版本。
P.S:早些时候我们遇到了一个问题,即公共存储库中的任何更改都需要开发人员在构建之前手动更改 pom 的版本,因为 Azure Artifacts 不允许相同的版本构建并部署到 Artifacts。
您可以尝试在构建管道期间为父 pom 和每个子 pom 的版本生成一个变量 运行。例如:PARENT_PACKAGE_VERSION
、CHILD_01_PACKAGE_VERSION
、CHILD_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>
。 MajorVersion 和 MinorVersion 可能不会经常更改。 BatchVersion 可以在父包 and/or 子包中发生任何更新时更改或自动增加。