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需要的版本,即忽略那个链上的那个包。

你可能感兴趣的:(Maven解决依赖冲突)