Maven Dependency Tree

来源:互联网 发布:三菱刺刀淘宝专卖店 编辑:程序博客网 时间:2024/06/06 07:21
Mavne的依赖树可以用来查看一个项目的依赖冲突。举个例子,想找出为什么common collection 2.0这个包会被maven的依赖树引用到,可以在该项目的目录下运行下面这行命令:
mvn dependency:tree -Dverbose -Dincludes=commons-collections

verbose 标志是用来告诉maven依赖树将那些被忽略掉的依赖包也显示出来,比如在这个例子中,会输出:
[INFO] [dependency:tree][INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile[INFO] |  \- commons-validator:commons-validator:jar:1.2.0:compile[INFO] |     \- commons-digester:commons-digester:jar:1.6:compile[INFO] |        \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile[INFO]    \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile[INFO]       \- commons-collections:commons-collections:jar:2.0:compile
这样我们就可以看到 common-collections 2.0 在依赖树中被选中了,因为maven用是"nearest-wins" (最近获胜)的策略。可以出2.1版本的依赖深度是3,面2.0版本的依赖深度是2,所以选了2.0.