2013-10-24 32 views
3

我試圖設置一個版本號並在Maven中構建一個項目,但該構件似乎是舊版本,即使版本號已在處理。該命令是:在Maven中設置新版本號並一次性構建所有代碼

versions:set -DnewVersion=1.0.1 clean compile package -Dmaven.test.skip=true -U 

輸出開始了這樣的:

 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building MyLibraries 1.0.0 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- versions-maven-plugin:2.1:set (default-cli) @ SharedLibraries --- 
[INFO] Searching for local aggregator root... 
[INFO] Local aggregation root: C:\Documents and Settings\user\My Documents\workspaces\MyWorkspace\MyProjectRoot 
[INFO] Processing com.mycompanies:MyLibraries 
[INFO]  Updating project com.myCompany:MyLibraries 
[INFO]   from version 1.0.0 to 1.0.1 
Props: {project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} 
Props: {project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} 
Props: {project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} 
Props: {project.artifactId=MyLibraries, project.version=1.0.1, project.groupId=com.myCompany} 
[INFO] 
[INFO] Processing com.myCompany:Assembly 
[INFO]  Updating parent com.myCompany:MyLibraries 
[INFO]   from version 1.0.0 to 1.0.1 

但後來:

 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building MyLibraries 1.0.0 
[INFO] ------------------------------------------------------------------------ 

和最終的jar的版本號爲1.0.0。

是否有可能在一個命令中更新版本並構建項目,或者是否需要兩個命令:一個用於更新版本,另一個用於構建?

我在RAD(基於Eclipse平臺)中這樣做,所以我寧願避免在兩次運行配置中單擊兩次,如果可能的話。

+0

有什麼理由不使用發佈插件來更新版本後的版本? – khmarbaise

+0

@khmarbaise:我們還沒有將Maven與源代碼控制連接起來 - 發佈插件會不需要連接到源代碼控制就可以實現我想要的功能嗎? – FrustratedWithFormsDesigner

回答

2

在這種情況下,您面臨的問題是,如果您調用mvn versions:set ... clean package,pom文件已被加載到內存(反應堆)中,稍後會在程序包生命週期中使用,但會調用目標版本-maven -plugin你正在改變硬盤上的pom文件。換句話說,你需要有不同的電話才能成功。

mvn versions:set -DnewVersion=1.0.1 
mvn clean package 
+0

這就是我所害怕的。我試過'版本:set -DnewVersion = 1.0.1;乾淨的編譯包-Dmaven.test.skip = true -U'但maven抱怨說'''不是一個有效的目標。 – FrustratedWithFormsDesigner

+0

也許你的意思是'mvn版本:set -DnewVersion = 1.0.1; mvn clean編譯包-Dmaven.test.skip = true -U'?雖然介意你,但這是否會奏效取決於你正在使用的控制檯 - 標準的Windows控制檯不會做你想做的事情,但是像bash一樣。 – blalasaadri

+0

@blalasaadri:我正在運行它Eclipse運行配置,所以我實際上不需要鍵入'mvn'。 – FrustratedWithFormsDesigner

相關問題