maven从命令行重写project.version

maven从命令行重写project.version,maven,Maven,我想知道是否可以通过命令行覆盖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> <group

我想知道是否可以通过命令行覆盖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.0.0
只是。另一个。公司。名字
我的pom
1.3-1
我的模块
罐子
我的模块的POM项目

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

确保在
pom.xml中使用变量

<version>${version}</version>
例如:

pom.xml中

<version>${version}</version>
${version}

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

只是您不能覆盖
project.version
。尝试:

mvn versions:set -DnewVersion=<version>
如果父pom包含所有子项目,这就足够了。如果不是,您将需要转到包含所有子项目的超级项目并执行

mvn versions:update-child-modules
另外,如果parentPom存在于相对路径中,那么前面的两个步骤就足够了。如果不存在,则需要使用新版本安装parentPom项目

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

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

如果将以下内容放入pom.xml中,请检查Maven 3.5+中的。

<version>${revision}</version>
...
<properties>
    <revision>1.0.0-SNAPSHOT</revision>
</properties>
显然,只有当占位符属性被称为
revision
(您也可以在您的版本中使用
changelist
sha1
占位符)时,这才有效


请参见

为什么不尝试一个hello world项目?@mebada,如果我不在不同的项目上尝试多次,我不会问。如果你知道的话,为什么不提供解决方案呢?参考你的pom,你不能这么做。。。实际上,project.version应该是静态的,因为某些原因,它对我不起作用。请参考上面的my pom.xml。它仅在您具有
${version}
占位符时才有效。。。UH我也面临同样的情况,使用Maven 3.x.x。传递的参数将被忽略。Maven抱怨包含表达式。如果不向构建过程提供版本变量,会发生什么?空版本或字符串
${version}
。我认为这种方法还可以,但约翰·维洛尼斯的答案更好。它更能容忍错误。它是一种魅力,但有一件事我没有提到。。。其中一个模块依赖于另一个模块的工件,所以我也需要覆盖它。刚才提到了,很抱歉。突然,这在竹子连续集成系统上不起作用。没有时间去调查,只是提供事实。根据日志,它在以下情况后挂起:
搜索本地聚合器根…
因此我假设它找不到父pom…使用
versions:commit
删除de-pom备份:
mvn versions:set-DnewVersion=1.0.3 versions:commit
@mebada:这可以完美地工作。阿古斯蒂:你说得对。mvn版本:必须提交才能删除版本备份pom文件。这对我没有用处,因为它每次都会更改pom.xml和我的Docker build重建,即使没有任何更改。特别感谢Maven docs指针!
<version>${revision}</version>
...
<properties>
    <revision>1.0.0-SNAPSHOT</revision>
</properties>
mvn -Drevision=2.0.0-SNAPSHOT clean package