[TOC]
# maven 依賴沖突
如果在同一個工程下,加入多個依賴包只是版本等不同,則不遵循以下原則,會變成之后的版本覆蓋掉之前的版本。后引入的jar包覆蓋之前的Jar包。
而在Maven工程之間依賴關系,則遵循:
* 短路優先:即找到該不同版本的Jar包,那個離著當前工程最近,就是用那個。
```
A->B->X(v1.0),A->C->D->X(v2.0)
A-->X(v1.0)
```
* 聲明順序:即如果找到該不同版本的Jar包的路徑長度是相同的,那么在當前工程引用其他工程的時候,那個工程里的Jar包先被解析就是用誰。即先來后到。例:當A工程引用了B和C工程,取決于是B先被解析還是C先被解析,則選擇誰的Jar包,主要看配置文件中的依賴的位置。
```
A->B->X(v1.0),A->C->X(v2.0)
A-->X(v2.0)
```
也就是說路徑長度相同時,哪個dependency先在pom.xml聲明,哪個就優先。