2014-10-29 144 views
0

我有一個包含多個模塊的maven項目。當我釋放它時,我只是將模塊的版本從SNAPSHOT更改爲發佈版本及其正常。這可以通過Maven Release Plugin完成。使用Maven發佈項目:工件的不同發佈版本

問題出現是因爲我擁有的一些依賴關係實際上是由我們程序員的其他團隊開發的工件。因此,他們的版本可能經常發生變化,這是與其他依賴關係相反的行爲,例如hibernate的工件版本。在發佈的那一刻,我想使用一些快速變化的庫的可用版本。可能是最後一個。可能他們會爲我的發佈專門發佈他們的圖書館的新版本。 請注意,它們的庫是一個獨立的Maven項目,由它們控制單獨的版本。

我現在所能做的只是手動檢查哪個版本的依賴關係是最後一個版本,並手動將其放到我的POM中。它不那麼方便。可能有更好的方式來組織它與Maven和TeamCity?我能否更新其他組的工件的版本?他們的版本應該來自他們的Snapshot版本,或者來自他們已經部署到Nexus的最後一個版本。

+0

你怎麼跑您的版本?你使用的工具如哈德森/詹金斯?你在哪裏拿着你使用的罐子(經常改變) - 在Artifactory/Nexus中? – OhadR 2014-10-29 21:18:40

+0

我使用TeamCity。是的,經常更換的罐子由某些團隊在某些存儲庫中開發,然後部署到Nexus中。 – MiamiBeach 2014-10-30 19:01:58

回答

0

如前所述,您可以使用Versions Maven Plugin,更具體地說,您需要versions:update-properties。正如你可以閱讀手冊,它

將屬性設置爲最新版本的特定工件。

條件是您使用存儲庫管理器(例如Artifactory)。 Maven知道在這個回購中搜索最新的aritfacts。

在運行maven-release-plugin之前,您需要運行更新依賴項的versions-plugin。例如,您使用相關參數運行versions:update-properties

如果你想打印最新版本的工件,相同的版本插件是你的朋友。仔細看看我上面發給你的鏈接;相關的命令是versions:display-dependency-updates

如果您想有選擇地打印,只有您的工件最新版本,您可以使用屬性設置其版本。例如,如果你有相關性JAR X,寫在主POM是這樣的:

<dependency> 
    <groupId>myGroup</groupId> 
    <artifactId>X</artifactId> 
    <version>${x.version}</version> 
</dependency> 

<properties> 
    <x.version>3.1.0.RELEASE</x.version> 
</properties> 

然後使用versions:display-property-updates -DincludeProperties="x.version"

+0

好主意!看起來我可以指定要替換的版本的groupID和artifactID。但首先我想打印它們。你知道是否有可能打印最新版本的工件,但受限於某些組:工件,因爲打印都太多了。 – MiamiBeach 2014-10-31 14:58:06

+0

我已經更新了我的答案(至於您的打印問題)。如果這個答案有幫助,比接受/ + 1它:-) – OhadR 2014-10-31 15:10:03

+0

你的意思是版本:display-dependency-updates?但是沒有包含參數.. – MiamiBeach 2014-10-31 16:25:52