Maven 3.3 覆盖版本

Maven 3.3 override version

我正在使用 Maven 3.3.3。我刚从 3.1.1 升级,发现我不能再传入一个版本了。

pom.xml

<modelVersion>4.0.0</modelVersion>
<groupId>com.hello.world</groupId>
<artifactId>helloworld</artifactId>
<version>${VERSION_NUMBER}</version>
<packaging>pom</packaging>
<properties>
    <VERSION_NUMBER>LOCAL-ONLY-SNAPSHOT</VERSION_NUMBER>
</properties>

mvn 包-DVERSION_NUMBER=1.2.3

升级到Maven 3.3.3后,我现在得到错误信息: [错误]版本必须是常量

我的目标是能够传递一个版本号,并且永远不会在 pom.xml 中有实际的数字。我不想使用版本插件,因为它实际上会更改 pom.xml 以使用特定版本号。源代码控制中没有版本号。

您必须使用以下属性之一或组合:

${revision}, ${changelist}, and ${sha1}. 

这就是它不起作用的原因。

不幸的是,不可能在最新版本的 maven 中执行您正在尝试的操作 - 该版本是构建过程不可或缺的一部分,您必须在 POM 中明确指定它。

解决它的唯一方法(我并不是说这是个好主意)是在您的 maven 命令之前添加一个预处理步骤,例如使用 sed 修改 POM 并设置您想要的任何版本号。

出于好奇,你为什么要这样做?