最短路径优先
当依赖声明不在同一个POM文件中时,或者说存在依赖传递时,路径最短的jar包将被选为最终依赖。例如下面两个依赖路径:
此时Jar2.0将被选为最终依赖。
最先声明优先
当依赖声明不在同一个POM文件中时,或者说存在依赖传递时,并且依赖传递长度相同时,最先声明的依赖将被选为最终依赖。
此时Jar1.0将被作为最终依赖。
覆盖优先
当依赖声明在同一个POM文件中时,后面声明的依赖将覆盖前面声明的依赖。
此时,Jar2.0将被选为最终依赖。
查看maven依赖树
通过命令行输出到控制台:
mvn dependency:tree
通过命令行输出到指定文件:
mvn dependency:tree >d:/tree.txt
也可以通过idea Maven插件查看,我认为这是一种更好的方式。
查看maven Effective Pom文件
Effective Pom即最终起作用的Pom文件,maven最终裁决选中的所有依赖都会集中声明在该Pom文件中。
通过命令行输出到控制台:
mvn help:effective-pom
通过命令行输出到指定文件:
mvn help:effective-pom >d:/effective.xml
idea 用户可以右键项目pom.xml文件,选择maven,在进一步选择show effective pom命令查看。