springboot maven引入一个依赖,多了两个不同版本的jar包,依赖树无法对应的问题

首先项目结构是这样的,common是模块,starter是启动主包

img


1.我需要在common模块里引入okhttp4.10.0版本的依赖,全局搜索查看过项目此前没有添加过任何版本的okhttp包
在common模块的pom文件里引入依赖后,多了3.8.1和4.10.0两个版本的jar包

img


如果注释掉的话,同一个位置显示一个jar包都没有

img

2.不知道为什么会引入两个版本的jar包,但是在此基础上我查看common的依赖树,只搜索到了一个okhttp,且版本为4.10.0

img


在查看starter的依赖树时,也只搜索到了一个okhttp,但是版本为3.8.1,且来源显示为common包

img

3.如果引入依赖时写版本3.8.1则只有一个包,但是换成4.8.1 4.9.0 4.10.0都会出现这个问题(别的版本没试过),但是这边需求是4.8.0以上的版本

问题:1、为什么引入一个依赖会出现两个版本的jar包;2、为什么common模块里显示jar包版本为4.10.0,但是starter里显示jar版本为3.8.1且来源就是common模块;3、应该怎么解决呢?

这个说明在你的starter中的某个依赖确实依赖到了3.8.1这个包,你可以在这里按 ctrl 和 + (加号)快捷键展开所有依赖,然后ctrl + f 搜索okhttp,可以看到这两个版本分别是怎么来的。你那个图它只展示被覆盖后的结果。或者你可以发我代码或者可以帮你远程看下

img

很明显,是父工程引入了3.8.1版本的依赖,然后comom 模块引用了父工程,自然继承了3.8.1,当你在commom继续引用3.8.1时其实相当于没引用,但是引入其他版本的话,自然common中就有2个版本了。

引入两个 jar 就会导致依赖冲突,解决的办法是:找到冲突的 jar 包,如果可以的话就直接注释掉,如果不能直接注释,那就使用标签进行排除。

你应该是没有经验,这个应该是一个依赖里面包含了这个jar包,你得找出来那个jar包在你需要的地方引用

可以在父项目中加入排除这个包,找到这个包的引用的地方,排除掉即可

mvn clean

common 模块 clean install,整个项目reimport一下,可能只是idea有缓存

排除一下