Maven中解决依赖冲突的问题】的更多相关文章

1.短路优先:谁离得最近就使用谁的依赖jar包 C到达A为C->B->A C到达B为C->B 例如: A中的 commons-io的版本为2.4 B中的commons-io的版本为2.0 C中依赖于B,B依赖于A 则C的junit的包为2.0版本 因为依赖的短路优先 2.如果两条路都是一样长的时候呢? C到达A为C->A C到达B为C->B 则看pom文件中依赖的两个工程谁在前面就是用哪个版本 例如: 这里使用的common-io为2.4版本 <dependency&g…
一.问题 项目开发过程中,经常会遇到jar冲突,然后maven根据自己的规则进行冲突解决,导致项目在运行的过程中报错. 1.maven自动解决依赖冲突的规则是什么? 2.如何查看当前项目的maven的依赖树? 3.如何从依赖树中找到自己预期的版本,是被那个jar给覆盖了? 4.如何人工进行依赖冲突解决,达到使用目的? 二.解决问题 1.maven自动解决依赖冲突的规则是什么? 第一原则:路径最近者优先 项目A有如下的依赖关系: A->B->C->X(1.0) A->D->X(…
Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题.本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲突的解决办法. 一.Maven中jar包冲突产生原因MAVEN项目运行中如果报如下错误: Caused by:java.lang.NoSuchMethodErrorCaused by: java.lang.ClassNotFoundException 十有八九是Maven jar包冲突造成的.那么j…
一.依赖原则 假设,在 JavaMavenService2 模块中,log4j 的版本是 1.2.7,在 JavaMavenService1 模块中,它虽然继承于 JavaMavenService2 模块,但是它排除了在 JavaMavenService2 模块中继承 1.2.7 的版本,自己引入了1.2.9 的 log4j版本. 此时,相对于 WebMavenDemo 而言,log4j.1.2.7.jar 的依赖路径是 JavaMavenService1 >> JavaMavenServic…
mvn/maven如何检查依赖冲突,并解决依赖冲突 如图,点击图示位置,就可以把整个项目的依赖关系展示出来 在图里选中一个artifact,则所有依赖该artifact的地方都会一起连带出来突出显示,如果有不同版本的也会标记出来.这样该artifact在该工程里是如何被直接或间接引入的进来也就明朗了. 也可以在项目的pom.xml文件里,右键调出显示依赖关系的快捷键 如果有冲突的版本,可以右击该版本的节点然后Exclude,对应的pom.xml就已经成功修改了.(IntelliJ IDEA对于文…
新版API上线后,发现LOG文件没有正常输出.查看Tomcat的Log文件发现如下的错误信息 May , :: AM com.sun.xml.ws.server.sei.EndpointMethodHandler invoke SEVERE: Found class ch.qos.logback.core.spi.CyclicBufferTracker, but interface was expected java.lang.IncompatibleClassChangeError: Foun…
参考博文:Maven中排除依赖.归类依赖.优化依赖…
首先我们在idea中创建一个maven工程,我们只关注pom.xml以及External Libraries中导入的jar包 导入spring-beans.jar <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.2.RELEASE</version> </dep…
依赖冲突 若项目中多个Jar同时引用了相同的Jar时,会产生依赖冲突,但Maven采用了两种避免冲突的策略,因此在Maven中是不存在依赖冲突的. 短路优先 本项目-->A.jar-->B.jar-->X.jar 本项目-->C.jar-->X.jar 若本项目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,并且C.jar也引用了X.jar. 在此时,Maven只会引用引用路径最短的Jar. 声明优先 若引用路径长度相同时,在pom.xml中谁先…
 查看工程目前冲突的Jar包,这里以fastjson.jar为例: 打开工程的pom.xml,进入到Dependency Hierarchy页面搜寻目标Jar. 从这里我们可以看到目前工程中有2处导入了fastjson.jar,一个是直接依赖jar,另外一个是依赖的工程erp-facade中的间接依赖jar. 那么现在我们解决,取消这两种依赖jar的打包呢? (1)取消直接依赖jar 找到pom.xml中相关依赖描述屏蔽或者删除即可: (2)取消间接依赖的jar 在依赖的工程中,加入如下代码:…