码迷,mamicode.com
首页 > 其他好文 > 详细

maven包循环依赖。导致溢出定位加解决

时间:2019-05-24 19:33:22      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:npe   一个   判断   core   溢出   maven依赖   clu   就是   hot   

通过命令 mvn denpendency:tree

可以打印出  当前工程的maven依赖路径

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ bnq_worker ---
[INFO] com.bnq:bnq_worker:war:1.0.0-SNAPSHOT
[INFO] +- com.bnq:bnq_biz:jar:1.0-SNAPSHOT:compile
[INFO] |  +- com.bnq:auth_client:jar:1.0-SNAPSHOT:compile
[INFO] |  |  \- com.bnq:bnq_core:jar:1.0-SNAPSHOT:compile

看着略显复杂,离上一行空的远一点

每一行的|待表层级 他的上一级是引入下一级的这样一个关系  +号代表还有兄弟节点。-号代表当前层级的最后一个节点。 |就是层级 1刚2刚。

当项目比较复杂的时候,就可以利用这个解决。当项目中报某某两个Jar循环依赖了,就找出引入他的那个jar 再找出对应的maven  exclusions即可

 

常见问题如:Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflow
log4j-over-slf4j.jar 引入的maven是

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>1.7.26</version>
</dependency>

从maven tree中判断到引入的这个jar包的是这个jar  com.bnq.jz:dcmall-api-client:jar:1.0-SNAPSHOT:compile
  对应Maven是

<dependency>
<groupId>com.bnq.jz</groupId>
<artifactId>dcmall-api-client</artifactId>
<version>1.0-SNAPSHOT</version>

</dependency>
然后加入exclusion 让他不引入log4j-over-slf4j maven 就不会引入这个jar包。改成
<dependency>
<groupId>com.bnq.jz</groupId>
<artifactId>dcmall-api-client</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>

重新更新Maven 问题就解决了。
这个如果项目maven引入超级复杂。那只能靠此类方法解决。idea中通过maven show dependency这种方法 好多人提到。但是如果项目特别复杂。估计也捉襟见肘

 

maven包循环依赖。导致溢出定位加解决

标签:npe   一个   判断   core   溢出   maven依赖   clu   就是   hot   

原文地址:https://www.cnblogs.com/tecnologycc/p/10919522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!