2013-01-23 115 views
15

我有一個Maven pom.xml,我用Jenkins構建項目並釋放項目部署。Maven:更改pom.xml中的版本屬性

但在此之前建設「發行版本」後,我們需要在

例如設置我的版本: 我在pom.xml中

<properties> 
    <version-own>0.0.21-SNAPSHOT</version-own> 
</properties> 

釋放我需要這樣設置

<properties> 
    <version-own>0.0.25</version-own> 
</properties> 

發佈之後我需要像這樣設置

<properties> 
    <version-own>0.0.27-SNAPSHOT</version-own> 
</properties> 

這怎麼辦?

+3

對於初學者,0.0.21-SNAPSHOT在版本中應該變爲0.0.21。然後,在發佈之後,將該數字滾動到下一個版本,並添加快照,即0.0.22-SNAPSHOT,以表明它目前正在開發中。請注意,你似乎在跳過數字,這很好,但我沒有在這個例子中。 – chad

回答

6

對於初學者,您可以手動完成。如果你的構建很好地遵循了maven慣例,那麼你可以利用現有的幾個Maven插件之一來幫助管理版本號。

maven-versions-plugin可幫助自動手動更改版本號。它有很好的CLI命令來幫助您在發佈之前調整您的poms。

然後有maven-release-plugin可以自動化切割發佈的整個過程。它會將您的快照更改爲發佈版本,然後在發佈版本之後將其滾動到下一個快照。在所有這些過程中,它將離散版本的poms提交給源代碼控制。

再一次,在maven社區的更多自動化部分中看到成功的祕訣在於你的構建是否以maven方式做事。黑客,高度調整的非常規構建通常會對成功使用發佈插件有很多障礙。

+0

你不瞭解我。需要更改

 0.0.21-SNAPSHOT    com.test-release features-test-release ${version-own} 
user2004266

25

如果你沒有使用你自己的版本屬性,可以考慮將你的<project><version>0.0.21-SNAPSHOT</version></project>元素上運行以下內容:將修改您的POM和調整的版本根據自己的喜好

mvn versions:set versions:commit -DnewVersion="0.0.25" 

。你很可能需要提交此變更到您的源代碼控制庫,這樣做的SCM插件的SCM:簽入的目標只是罰款(假設你希望它是自動的):

mvn scm:checkin -Dincludes=pom.xml -Dmessage="Setting version, preping for release." 

然後您就可以執行發佈(我推薦maven-release-plugin),之後你可以設置你的新版本並按照上面的方式提交它。

versions plugin是你的朋友。編寫腳本可能會涉及一些參數化構建,或者最好是jenkins的groovy插件,它允許您獲取特定於Maven的構建變量。

+0

需要更改 0.0.21-SNAPSHOT <依賴性> com.test釋放 特徵檢驗釋放 $ {版本}自己 user2004266

+1

在這裏扮演惡魔的擁護者:爲什麼你不能廢棄' 0.0.21-SNAPSHOT'只需' 0.0.21-S NAPSHOT'?如果需要,您仍然可以使用'$ {project.version}'**引用版本,並且您可以使用上述的版本,版本和scm插件。 – Anew

+0

版本 - 自己是依賴版本 – user2004266

0

看着這個comment您正在描述您正在使用此版本來提供依賴關係。 maven-release-plugin應該可以幫助你管理你的版本。所以在你的pom.xml中提供這個插件。

而對於手動提供發佈和開發版本步驟,創建詹金斯一份工作,這將有2個字符串參數:
developmentVersion
releaseVersion
添加「援引頂級的Maven目標」打造步執行釋放(例如):

clean release:clean release:prepare release:perform -DdevelopmentVersion=${developmentVersion} -DreleaseVersion=${releaseVersion} 

建設作業時,它會提示您插入兩個developmentVersion和releaseVersion。

乾杯,
暴君

5

有一個辦法來,很容易。隨着一個命令你可以改變任何你想要的部分:

剪切和粘貼:

mvn build-helper:parse-version versions:set -DbuildNumber=555 '-DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}-${buildNumber}' 

爲清楚:

mvn build-helper:parse-version versions:set -DbuildNumber=555 
    '-DnewVersion= 
        ${parsedVersion.majorVersion} 
       .${parsedVersion.minorVersion} 
       .${parsedVersion.incrementalVersion} 
       -${buildNumber}' 

這是一個簡潔的例子,如何在一個去與更新版本建立價值

1

有類似parsedVersion.nextIncrementalVersion

mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} versions:commit

相關問題