maven冲突解决
2016-10-25 本文已影响3619人
_li_
主要目的是升级现有的jar包,排除传递依赖引起的冲突
maven 命令
mvn dependency tree
mvn dependency:tree命令可以查看当前项目的依赖关系。可以将当前POM的依赖关系按照树形结构展开。
[INFO] +- org.springframework:spring-context:jar:4.2.8.RELEASE:compile
[INFO] | +- org.springframework:spring-aop:jar:4.2.8.RELEASE:compile
[INFO] | | \- aopalliance:aopalliance:jar:1.0:compile
[INFO] | +- org.springframework:spring-beans:jar:4.2.8.RELEASE:compile
[INFO] | \- org.springframework:spring-expression:jar:4.2.8.RELEASE:compile
...
上述树形结构里,\-
表示当前父节点最后的子节点。
–Dverbose
加上这个参数,可以将当前所有的依赖关系都展示出来,包括来自不同处的依赖项。
[INFO] +- org.springframework:spring-context-support:jar:4.2.8.RELEASE:compile
[INFO] | +- (org.springframework:spring-beans:jar:4.2.8.RELEASE:compile - omitted for duplicate)
[INFO] | +- (org.springframework:spring-context:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for conflict with 4.2.8.RELEASE)
[INFO] | \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for conflict with 4.2.8.RELEASE)
...
–Dincludes
-Dincludes 可以进行参数过滤,如果需要查询spring相关的依赖,可以
mvn dependency:tree -Dverbose -Dincludes=*spring*:*spring*
[INFO] +- org.springframework:spring-context:jar:4.2.8.RELEASE:compile
[INFO] | +- org.springframework:spring-aop:jar:4.2.8.RELEASE:compile
[INFO] | | +- (org.springframework:spring-beans:jar:4.2.8.RELEASE:compile - omitted for duplicate)
[INFO] | | \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for duplicate)
[INFO] | +- org.springframework:spring-beans:jar:4.2.8.RELEASE:compile
[INFO] | | \- (org.springframework:spring-core:jar:4.1.1.RELEASE:compile - version managed from 4.2.8.RELEASE; omitted for duplicate)
...
当然,可以将输出结果导入到文本中。只需要在命令后加入”>a.txt”即可。
mvn help:effective-pom
上述命令可以将当前项目自己的POM已经从父类中继承的POM内容输出,可以输出到文本中。
mvn help:effective-pom>a.txt
mvn dependency:analyze
dependency:analyze
是通过分析bytecode来输出报告。包含Used undeclared dependencies(使用但未定义的依赖项)和Unused declared dependencies(未使用但却定义的依赖项)。
- Used undeclared dependencies
该列表列出的是程序代码直接用到的、但并没在pom.xml里定义的依赖项。 - Unused declared dependencies
该列表列出的是程序代码没用到的、但在pom.xml里定义的依赖项。注意,该列表可能不准确,因为程序代码可能使用了反射技术,在运行时需要这些jar包存在。
排除依赖
dependency
在dependency中,可以通过exclusions标签进行依赖排除。
例如,排除spring
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
排除所有
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>