Maven 日常冲突解决

1.如果发生冲突如何解决

   1.首先确保 jar 依赖没有缓存,可以先清除 idea的缓存

Maven 日常冲突解决_第1张图片

 

2.然后 重新compile 项目 可以使用如下命令:

 mvn clean compile -U

3.接着可以通过查看依赖树 如下命令:

mvn dependency:tree>tt.txt
 

可以在本地项目上查看 tt.txt 然后搜搜冲突的jar 包,然后根据冲突报错排除掉不需要的jar。

2.基础原则

解决方式
1、第一声明优先原则:
在pom.xml配置文件中,如果有两个名称相同版本不同的依赖声明,那么先写的会生效。
所以,先声明自己要用的版本的jar包即可。

2、路径近者优先:
直接依赖优先于传递依赖,如果传递依赖的jar包版本冲突了,那么可以自己声明一个指定版本的依赖jar,即可解决冲突。

3、排出原则:
传递依赖冲突时,可以在不需要的jar的传递依赖中声明排除,从而解决冲突。
例子:


        org.apache.struts
        struts2-spring-plugin
        2.3.24
       
         
            org.springframework
            spring-beans
         

       


4、版本锁定原则(最常使用)
在配置文件pom.xml中先声明要使用哪个版本的相应jar包,声明后其他版本的jar包一律不依赖。解决了依赖冲突。
例子:


        4.2.4.RELEASE
        5.0.7.Final
        2.3.24
   

   
   
       
           
                org.springframework
                spring-context
                ${spring.version}
           

3.如何通过冲突报错寻找具体的冲突jar是那个

 如提示 com.google.common.collect.Sets$SetView.iterator() 中无 iterator 方法,第一我们只能大概猜测是 google 相关的jar,想要知道具体是那个jar ,我们可以在ide

a中搜索 com.google.common.collect.Sets 这样你会看到有多个 jar中找到次类,然后具体点开查看是那个jar 中 没有对应的iterator 方法;然后排除掉没有 iterator的jar;或者通过 显示引入最新的版本包含iterator方法的jar版本进来。

你可能感兴趣的:(java,工具,大数据)