Maven解决依赖冲突

1.Maven的基本功能

Maven一个最为基础的功能就是进行包管理,简单的介绍可以参考下面这一片博客maven基础知识——包管理
我想总结的是更为细致的一个知识点,即如何解决包冲突。

2.包冲突

所谓包冲突的产生,是由传递依赖性产生的。简单的说就是,你所依赖的包它还依赖了别的包。但是什么时候会产生包冲突呢?看下面一个简单的例子:

  1. 你的项目依赖了a包和b包
  2. a包依赖了c包,c包依赖了d包(2版本)
  3. b包依赖了d包(1版本)
    所以这时候,你的项目其实就间接的依赖了两个不用版本的d包,这时候就会产生冲突。

3.包依赖原则

原则非常的简单:近者胜出!
以上面例子为例,1版本的包从你的项目依赖树出发,依赖链为:项目—b包—d包(1版本);
2版本的包的依赖链为:项目—a包—c包—d包(2版本)。从依赖链的长短,可以看出两者距离你的项目的以来层次距离,所以最后你的项目引入的是1版本的d包。

4.查找冲突的方法

有下面三个方法:
1.直接点击maven中dependencies,可以看到整个依赖树。
2.运行mvn dependency:tree 指令,在终端中查看。
3.下载第三发插件maven helper,可以在pom.xml文件中直接查找。

5.解决方法

有以下两个解决方法:

  1. 把需要的包的版本,直接加入到pom.xml文件中,即从项目直接引入。
  2. exclusion需要的版本,即忽略那个链上的那个包。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。