當一個項目中出現重複的依賴包時,maven 2.0.9以後的版本會用以下的規則來決定使用哪個版本的包:maven
好比有以下兩個依賴關係:code
A -> B -> C -> D(V1) F -> G -> D(V2)
這個時候項目中就出現了兩個版本的D,這時maven會採用最短路徑原則,選擇V2版本的D,由於V1版本的D是由A包間接依賴的,整個依賴路徑長度爲3,而V2版本的D是由F包間接依賴的,整個依賴路徑長度爲2。xml
假設有以下兩個依賴關係:項目
A -> B -> D(V1) F -> G -> D(V2)
這個時候由於兩個版本的D的依賴路徑都是同樣長,最短路徑原則就失效了。這個時候Maven的解決方案是:按照依賴包在pom.xml中聲明的前後順序,優先選擇先聲明的包解決方案