52

我想知道是否可以通过命令行覆盖 Maven 中的 project.version/version 变量?

以下不起作用:

mvn deploy -Dversion=1.0-test-SNAPSHOT  
mvn deploy -Dproject.version=1.0-test-SNAPSHOT  

在此先感谢您的帮助!

我的 pom.xml 是:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>just.another.company.name</groupId>
    <artifactId>my-pom</artifactId>
    <version>1.3-SNAPSHOT</version>
    <name>My Module</name>
    <packaging>jar</packaging>
    <description>POM Project for My Module</description>
</project>
4

3 回答 3

69

根本无法覆盖project.version. 尝试:

mvn versions:set -DnewVersion=<version>

通常,我首先更新 parentPom

mvn versions:set -DnewVersion=1.0.3-SNAPSHOT

如果父 pom 包含所有子项目就足够了,如果不是,您将需要转到包含所有子项目的超级项目并执行

mvn versions:update-child-modules

此外,如果 parentPom 存在于相对路径中,则前面的两个步骤就足够了,如果不存在,则需要使用新版本安装 parentPom 项目

mvn install

如果您没有模块依赖于另一个模块,通常这就足够了。如果这样做,请将其版本声明为 project.version 这样的版本,它将自动反映

<version>${project.version}</version>

检查Maven 版本插件文档

于 2013-08-07T11:53:55.090 回答
17

在 Maven 3.5+ 中,如果您将以下内容放入您的 pom.xml

<version>${revision}</version>
...
<properties>
    <revision>1.0.0-SNAPSHOT</revision>
</properties>

默认情况下它将使用 1.0.0-SNAPSHOT,但您可以在命令行上覆盖它:

mvn -Drevision=2.0.0-SNAPSHOT clean package

显然,这仅在调用占位符属性时才有效revision(您也可以在您的版本中使用changelist和占位符)。sha1

https://maven.apache.org/maven-ci-friendly.html

于 2020-08-12T20:39:37.140 回答
10

是的,您可以通过从命令行传递所需的变量来覆盖项目版本。

确保你在你的pom.xml

例如:

mvn deploy -Dversion=1.0-test-SNAPSHOT 

pom.xml

<version>${version}</version>

这应该在运行时被选中。如果这种方法不起作用,您能否说明您是如何在您的pom.xml?

于 2013-08-07T10:14:41.780 回答