本文介紹了Maven-從x管理的版本,是否因重復(fù)而被省略?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問題描述
我很難理解Maven依賴關(guān)系樹中當(dāng)它聲明從x管理的版本時(shí)會(huì)發(fā)生什么;如果是重復(fù)的,則省略。
例如,假設(shè)我在server-a
的依賴項(xiàng)管理部分中定義了enterprise-data-2.4
。
我在server-a
的依賴關(guān)系樹中獲取了一個(gè)依賴項(xiàng)server-b
的以下內(nèi)容。enterprise-data-2.4
。
[INFO] +- hello.world.welcome.to:server-b:jar:3.1-SNAPSHOT:runtime
[INFO] | +- (hello.world.where.am: enterprise-data:jar:2.4:runtime - version managed from 3.0; omitted for duplicate)
假設(shè)server-b
是唯一拉入的JARenterprise-data-2.4
,我的理解是server-a
總是在這里拉入enterprise-data-2.4
。這樣做正確嗎?
但是,server-b
中代碼依賴于enterprise-data-3.0
,server-b
的編譯時(shí)依賴于enterprise-data-3.0
。
現(xiàn)在,我有一個(gè)測(cè)試項(xiàng)目,比如說(shuō)test-b
,它測(cè)試server-a
項(xiàng)目中存在的server-b
JAR,并且對(duì)enterprise-data-3.0
具有測(cè)試依賴關(guān)系。這些測(cè)試直接命中server-a
上的代碼。
當(dāng)我在test-b
中運(yùn)行我的測(cè)試時(shí),我在嘗試訪問enterprise-data-3.0
中存在的功能時(shí)應(yīng)該收到錯(cuò)誤,因?yàn)樗皇怯?code>server-a引入的,還是會(huì)因?yàn)閷?duì)enterprise-data-3.0
存在測(cè)試依賴關(guān)系而通過(guò)?它當(dāng)前已通過(guò),但我不確定測(cè)試依賴項(xiàng)是否足夠。
請(qǐng)幫我理解一下。
編輯:我正在使用maven-3
。
謝謝。
推薦答案
例如,假設(shè)我在服務(wù)器a的依賴項(xiàng)管理部分中定義了Enterprise-data-2.4。
然后你總是得到2.4,即使只有取決于1.8的罐子也是如此。依賴項(xiàng)管理優(yōu)先于依賴項(xiàng)中介。
假設(shè)服務(wù)器-b是唯一拉入企業(yè)數(shù)據(jù)-2.4的JAR,我的理解是服務(wù)器-a將始終在這里拉入企業(yè)數(shù)據(jù)-2.4。這樣做正確嗎?
假設(shè)您沒有依賴項(xiàng)管理,則是。如果存在依賴于不同版本的多個(gè)依賴項(xiàng),則問題是首先加載哪個(gè)依賴項(xiàng)(及其傳遞依賴項(xiàng)),根據(jù)Maven Version>2.0.9的依賴項(xiàng)中介規(guī)則。其他選項(xiàng)為:”從x管理,重復(fù)則省略”。
當(dāng)我在test-b中運(yùn)行測(cè)試時(shí),嘗試訪問Enterprise-Data-3.0中的功能時(shí)是否會(huì)出現(xiàn)錯(cuò)誤,因?yàn)樗皇怯?em>服務(wù)器-a引入的,還是會(huì)因?yàn)閷?duì)Enterprise-Data-3.0存在測(cè)試依賴而通過(guò)?它當(dāng)前已通過(guò),但我不確定測(cè)試依賴項(xiàng)是否足夠。
如果它使用不兼容的代碼拉入錯(cuò)誤的版本,是的,您將看到錯(cuò)誤。對(duì)于Maven3,使用3.0定義測(cè)試范圍依賴項(xiàng),使用2.4定義編譯范圍依賴項(xiàng),這意味著Maven將覆蓋2.4,并使用在測(cè)試范圍中定義的較新的依賴項(xiàng)。有關(guān)詳細(xì)信息,請(qǐng)參閱this question and its answers。
不過(guò),您始終可以在test-b中使用依賴項(xiàng)管理來(lái)修復(fù)要使用的每個(gè)依賴項(xiàng)的版本。
這篇關(guān)于Maven-從x管理的版本,是否因重復(fù)而被省略?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,