Maven Dependency Version:依賴版本自動升級

西召發表於2019-03-04

之前介紹過Maven的依賴調節機制

依賴調節是為了解決版本不一致的問題(multiple versions),並採取就近原則(nearest definition)。

舉例來說,A專案通過依賴傳遞依賴了兩個版本的D:

A -> B -> C -> ( D 2.0 ) ,

A -> E -> ( D 1.0 )
複製程式碼

那麼最終A依賴的D的version將會是1.0,因為1.0對應的層級更少,也就是更近。

除了我們常用的<version>1.1.0</version>,在宣告依賴版本的時候,可以通過表示式靈活地配置版本號。

例如配置jar包x的<version>標籤支援如下幾種語法:

1.0: 推薦依賴版本,此版本號可能會被覆蓋。
[1.0]: 強制依賴此版本。
複製程式碼

還可以控制依賴的版本範圍:

(,1.0]: x <= 1.0
[1.2,1.3]: 1.2 <= x <= 1.3
[1.0,2.0): 1.0 <= x < 2.0
[1.5,): x >= 1.5
複製程式碼

同時宣告多個版本範圍也是可以的,只要用逗號分隔即可:

(,1.0],[1.2,): x <= 1.0 或者 x >= 1.2 
複製程式碼

當你不希望依賴某個版本的時候,可以宣告為:

(,1.1),(1.1,)
複製程式碼

舉例來說,你想依賴Apache的commons-math3的最新穩定版,而且不想每次有了新的版本手動去升級pom.xml,可以使用如下<version>配置:

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-math3</artifactId>
	<version>[3.+,)</version>
</dependency>
複製程式碼

編譯專案,你會看到專案中依賴的版本為當前(2019/03/04)最新的正式版:3.6.1

當然,這麼做是有風險的,因為自動升級版本可能引入未知的修改。

除非你信任這個專案的釋出者,相信其釋出的新版本都是向下相容的,這樣才能保證自動升級到最新版本以後不會出問題。


詳細用法參考Maven官方文件 Dependency Version Requirement Specification

Maven Dependency Version:依賴版本自動升級

相關文章