0.背景
maven依赖冲突,无非就是导入了多个版本的依赖包,程序里不知道用哪个了。
pom中两个不同的dependency中都使用到了一个相同的包P,但是这个相同的包P在不同的dependency中引入的版本不一样,这时就会有依赖冲突的问题。
1.实例
在pom文件中,我们手动引入了mapstruct 1.4.1.Final
这个包。
同时在下方引入了springfox 3.0.0
这个包
这个时候项目是能正常启动的,因为我们在根pom文件中指明了mapstruct
的版本为1.4.1.Final
。
不过,当我们看依赖树的时候,会发现红色的线。
以上图这个最下方的地方为例,除了红色的线,我们还能点击另一条线看到另一引用位置。
查看时长按Alt可以有放大镜效果
这是啥意思呢,就是说springfox-swagger2
这里也用到了mapstruct,查看到它的版本是1.3.1.Final。
这个时候我们就可以根据自己项目的实际情况,保留一个版本即可,比如去掉这个1.3.1的。
点击后,这条线就消失了。
通过springfox-boot-starter- > springfox-swagger2 -> mapstruct这条路径排除掉了冗余的1.3.1版本。
然后你会看到pom文件里多了一行这个。
好啦大致的过程就是这样。
再强调一遍,这里我偷懒了,其实我不排这个包也没问题,因为根pom中有指明版本,项目是正常启动的。
我的本意是当你遇到依赖冲突问题时,按照上面的思路进行处理。