maven隐式依赖引起的包冲突
2016-09-01 21:01
393 查看
包冲突
使用maven管理项目时可能会遇到包冲突的情况比如:log4j-over-slf4j.jar 和 slf4j-log4j12.jar这两个包同时一起运行时就会有问题。这种冲突可能是显式依赖导致,也可能是隐式依赖导致。
显式依赖,直接可以从pom.xml文件的
<dependency>中看到两个冲突包的引用。
隐式依赖,在pom.xml的
<dependency>无法看到冲突的包,而是由
<dependency>引入的包间接引入的。
解决
先确认哪些依赖间接引入了包。使用mvn dependency:tree查看整个项目的依赖树,这里能看到所有的依赖,包括间接依赖。
结果类似如下:
[INFO] +- junit:junit:jar:4.12:test [INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test [INFO] +- org.apache.storm:storm-core:jar:1.0.2:provided [INFO] | +- com.esotericsoftware:kryo:jar:3.0.3:compile [INFO] | | \- com.esotericsoftware:minlog:jar:1.3.0:compile [INFO] | +- org.clojure:clojure:jar:1.7.0:provided [INFO] | +- com.lmax:disruptor:jar:3.3.2:provided [INFO] | +- org.apache.logging.log4j:log4j-api:jar:2.1:provided [INFO] | +- org.apache.logging.log4j:log4j-core:jar:2.1:provided [INFO] | +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.1:provided [INFO] | +- org.slf4j:log4j-over-slf4j:jar:1.6.6:provided [INFO] | +- javax.servlet:servlet-api:jar:2.5:provided [INFO] | \- org.slf4j:slf4j-api:jar:1.7.7:compile [INFO] +- com.aaa.khala:aaa-khala-insight-sdk-transfer-api:jar:1.0.0-SNAPSHOT:compile [INFO] | \- com.aaa.khala:aaa-khala-common:jar:1.0.0-SNAPSHOT:compile [INFO] | +- javax.mail:javax.mail-api:jar:1.5.5:compile [INFO] | +- cglib:cglib:jar:2.2.2:compile [INFO] | +- org.aspectj:aspectjrt:jar:1.7.4:compile [INFO] | +- org.aspectj:aspectjweaver:jar:1.7.4:runtime [INFO] | +- org.javassist:javassist:jar:3.20.0-GA:compile [INFO] | +- log4j:log4j:jar:1.2.17:compile [INFO] | +- org.slf4j:slf4j-log4j12:jar:1.7.7:compile [INFO] | +- dom4j:dom4j:jar:1.6.1:compile [INFO] | +- jaxen:jaxen:jar:1.1.6:compile [INFO] | +- commons-collections:commons-collections:jar:3.2.1:compile [INFO] | +- commons-codec:commons-codec:jar:1.9:compile [INFO] | +- commons-beanutils:commons-beanutils:jar:1.9.2:compile [INFO] | +- org.apache.commons:commons-compress:jar:1.6:compile [INFO] | | \- org.tukaani:xz:jar:1.4:compile
查到冲突包对应的依赖,在pom.xml的
<dependency>中配置排除,就不会引入该包了,例如:
<dependency> <groupId>com.aaa.khala</groupId> <artifactId>aaa-khala-insight-sdk-transfer-api</artifactId> <version>1.0.0-SNAPSHOT</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
========广告时间========
公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。
鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以购买。感谢各位朋友。
为什么写《Tomcat内核设计剖析》
=========================
欢迎关注:
相关文章推荐
- maven 隐式依赖引起的包冲突解决办法
- maven隐式依赖引起的包冲突
- Maven的隐式依赖导致Jar包冲突的问题
- Maven的Pom文件中的隐式依赖导致Jar包冲突的问题
- Maven 隐式依赖包冲突导致程序报错
- maven 依赖冲突的问题
- Maven依赖冲突
- maven(android-maven-plugin3.8.0)打包apk无法启动,apklib依赖包的资源索引出错(R文件与主模块冲突)问题解析
- maven依赖的冲突,聚合,继承。
- Maven提高篇系列之(五)——处理依赖冲突
- 170525、解决maven隐式依赖包版本问题
- Maven间接依赖冲突解决办法
- maven依赖jar包时版本冲突的解决
- 解决gradle的本地工程依赖和通过maven依赖之间的冲突问题
- 解决maven传递依赖中的版本冲突
- 一点一点学maven(07)——maven依赖(范围、传递、排除、冲突)
- 查lib下的jar来自哪个maven依赖(通过用于解决jar版本冲突)
- 解决maven传递依赖中的版本冲突
- spring3的一个报错,原因是maven依赖包冲突,有重复的依赖。
- idea 中查看maven 依赖图并分析冲突