Maven 覆盖版本标签

Maven overwrite version tag

在我项目的 POM 文件中,有一些标签

<groupId>foo.bar</groupId>
<artifactId>foobar</artifactId>
<version>X</version>
<description>foo bar foo bar</description>

指定。我正在使用 Jenkins 进行一些构建,我想覆盖 X 值。我该怎么做?

举个例子,我对 MSBuild 比较熟悉,我可以在那里做类似的事情

msbuild.exe project.sln ...some options... /p:AssemblyVersion=X

就是我说的那个 AssemblyVersion。 maven 可以吗?

除此之外,这是一个好的做法吗?目前,我有版本 1.0-SNAPSHOT。我应该手动更改该值吗?如何执行发布?

要从 Jenkins 自动更新 pom 文件中的版本,请使用 -DnewVersion 参数和 mvn 命令。
示例:

mvn versions:set -DnewVersion=someversion

在构建期间,如果您想将内部版本号更新为您的工件版本,那么您可以像 -DnewVersion=${BUILD_NUMBER}.

一样传递该环境变量

编辑 1:
归功于此 SO 线程 updating-version-numbers-of-modules-in-a-multi-module-maven-project。解释的很清楚。