2015-08-21 95 views
0

我使用的是Maven 3.3.3。我剛剛從3.1.1升級,發現我無法再傳入一個版本。Maven 3.3覆蓋版本

的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之後,我現在得到的錯誤消息: [ERROR]版必須是一個常量

我的目標是能夠傳入一個版本號,並且在pom.xml中永遠不會有實際的數字。我不想使用versions-plugin,因爲它實際上會更改pom.xml以使用特定的版本號。源代碼管理中沒有版本號。

+0

看到它可能會幫助你http://stackoverflow.com/questions/1981151/warning-on-using-project-parent-version-as-the-version-of-a-module-in-maven-3 –

+0

@SubodhJoshi該鏈接仍然沒有與我的問題相關的答案。我仍然需要弄清楚如何在版本中使用buildnumber-maven-plugin中的$ {buildNumber}? – sworded

+0

我懷疑你已經從Maven版本3.1.3更新了嗎?不存在.... – khmarbaise

回答

0

不幸的是,你不可能在最新版本的maven中做你正在嘗試的東西 - 這個版本對於構建過程非常重要,你必須在你的POM中明確地指定它。

圍繞它的唯一方法(我不建議這是一個好主意)應該是在你的maven命令之前添加一個預處理步驟,例如,使用sed修改POM並設置所需的任何版本號。

出於好奇,你爲什麼要這麼做?

+0

我希望讓我的CI服務器(Jenkins)能夠管理所有版本和發佈,而不會有任何開發人員擔心。 – sworded

0

你必須使用一個或以下性質的組合:

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

這根本不起作用的原因。

+0

你能解釋這是如何工作的嗎?我用VERSION替換了VERSION_NUMBER,並且得到了相同的錯誤 - 版本必須是常量。 – sworded