所思所感

Maven依赖冲突调解原则

· 三面体

最短路径优先,最先声明优先,覆盖优先

我的CSDN

最短路径优先

当依赖声明不在同一个POM文件中时,或者说存在依赖传递时,路径最短的jar包将被选为最终依赖。例如下面两个依赖路径:

此时Jar2.0将被选为最终依赖。

最先声明优先

当依赖声明不在同一个POM文件中时,或者说存在依赖传递时,并且依赖传递长度相同时,最先声明的依赖将被选为最终依赖。

此时Jar1.0将被作为最终依赖。

覆盖优先

当依赖声明在同一个POM文件中时,后面声明的依赖将覆盖前面声明的依赖。

此时,Jar2.0将被选为最终依赖。