IntelliJ IDEA-Maven解决依赖冲突大全

x33g5p2x  于10个月前 转载在 Java  
字(1.3k)|赞(0)|评价(0)|浏览(181)

IntelliJ IDEA-Maven解决依赖冲突大全

什么是依赖冲突

我们创建了一个项目,项目中使用到了两个jar包,一个是A,一个是B,但是A和B ,jar包同时依赖C jar包,但是A依赖C的1.0版本,B依赖的是C的2.0版本,那么maven会将所有的jar包都会下载下来,但是在使用jar包的时候会根据最短路径原则来使用,那么就会造成只会使用其中1个C的jar包,或许只会使用C1.0,或许只会使用C1.1jar包,那么可能就会造成类找不到,或者方法找不到的问题发生,那么这就是依赖冲突以及依赖冲突会引起的问题;

解决办法

第一种方式

暴力解决,直接删除冲突的jar (前提是你能找到)

第二种方式

单依赖过滤

同依赖过滤直接处理:可以过滤一个或者多个,如果过滤多个要写多个<exclusion>。这个也解决不了我的问题,或者说解决太麻烦,我那里知道hbase要依赖那些包,记不住。 (如果知道问题的依赖包 使用这种最好)
<dependency>    
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase</artifactId>
  <version>0.94.17</version> 
  <exclusions>  
     <exclusion>	 
       <groupId>commons-logging</groupId>		
       <artifactId>commons-logging</artifactId>  
     </exclusion>  
  </exclusions>  
</dependency>

多依赖过滤
把所有依赖都过滤了。手起刀落~啊,世界都安静了。 (自己测试下项目看看还能用不 如果项目没问就就ok)

<dependency>
  <groupId>org.apache.hbase</groupId>
  <artifactId>hbase</artifactId>
  <version>0.94.17</version>
  <exclusions>
    <exclusion>
      <groupId>*</groupId>
      <artifactId>*</artifactId>
    </exclusion>
  </exclusions>
</dependency>

第三种方式

我们还可以限制依赖的关系

在dependency配置中如果没有写scope默认就是compile范围,依赖的传递主要是针对compile作用域

我们换成 provided范围指的是在编译和测试的过程有效,最后生成包时不会加入

第四种方式(推荐)

以上方式是不是很麻烦 有没有简便的方案 当然有 maven help 插件 在IDEA 插件库中自己下载安装
使用步骤:

相关文章

热门文章

更多