首先项目结构是这样的,common是模块,starter是启动主包
2.不知道为什么会引入两个版本的jar包,但是在此基础上我查看common的依赖树,只搜索到了一个okhttp,且版本为4.10.0
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,可以看到这两个版本分别是怎么来的。你那个图它只展示被覆盖后的结果。或者你可以发我代码或者可以帮你远程看下
很明显,是父工程引入了3.8.1版本的依赖,然后comom 模块引用了父工程,自然继承了3.8.1,当你在commom继续引用3.8.1时其实相当于没引用,但是引入其他版本的话,自然common中就有2个版本了。
引入两个 jar 就会导致依赖冲突,解决的办法是:找到冲突的 jar 包,如果可以的话就直接注释掉,如果不能直接注释,那就使用标签进行排除。
你应该是没有经验,这个应该是一个依赖里面包含了这个jar包,你得找出来那个jar包在你需要的地方引用
可以在父项目中加入排除这个包,找到这个包的引用的地方,排除掉即可
mvn clean
common 模块 clean install,整个项目reimport一下,可能只是idea有缓存
排除一下