pom.xml 中的版本属性动态

Mou*_*Das 5 github nexus pom.xml maven jenkins

我有一个 Maven pom.xml,我使用 Jenkins 在 Nexus 中构建项目和可执行 jar 部署。但我想根据分支名称更改版本名称。

例如:我在 pom.xml 中有

<groupId>net.test</groupId>
<artifactId>test-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>iin-parent</name>
<packaging>pom</packaging>
Run Code Online (Sandbox Code Playgroud)

我需要这样设置:(分支-Master/Test1/Test2/..)

<groupId>net.test</groupId>
<artifactId>test-parent</artifactId>
<version>BranchName_0.0.1-SNAPSHOT</version>
<name>iin-parent</name>
<packaging>pom</packaging>
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

我正在使用 MVN 构建,如 -Drevision=BranchName-SNAPSHOT clean 编译包部署。但我想动态获取分支名称。

enter code here
Run Code Online (Sandbox Code Playgroud)

khm*_*ise 10

如果你使用clean compile package deploy你正在复制几个部分......只clean deploy需要。请阅读有关Maven 生命周期的文档。

此外,如果您想动态更改版本,您可以通过使用正确的属性(从 Maven 3.5.0+ 开始)来实现${revision}${sha1}例如${changelist}

<groupId>net.test</groupId>
<artifactId>test-parent</artifactId>
<version>${revision}</version>

<properties>
  <revision>1.0-SNAPSHOT</revision>
</properties>
Run Code Online (Sandbox Code Playgroud)

这可以在 Maven 中完成,如下所示:

mvn -Drevision=2.0-SNAPSHOT clean package
Run Code Online (Sandbox Code Playgroud)

或者如果您想对分支执行此操作:

mvn -Drevision=2.0-BranchName-SNAPSHOT clean package
Run Code Online (Sandbox Code Playgroud)

您必须知道,如果您愿意,mvn clean deploy请仔细阅读文档并遵循它们。