jar包依赖冲突该怎么解决(IT枫斗者)
maven jar包依赖规则
- 间接依赖路径最短优先
- 一个项目依赖了a和b两个jar包,其中a-b-c1.0,d-e-c1.0,由于c1.0路径最短,所以项目最后使用的jar包是c1.0
- pom文件中申明顺序优先
- 有人就问了如果a-b-c1.0,d-e-c1.1这样路径一样怎么办?其实maven的作者很聪明,会在pom文件中申明的顺序都选,如果pom文件中先申明了d在申明a,test项目最后的依赖回事c1.1
为什么是jar包冲突?
- 包冲突:指在一个项目的不同部分开发时调用的代码库,资源包的版本号不一致,包冲突的实质是不同部分同一个功能实现用的代码和资源不一致
- 举例说明:在一个项目a中,主工程是a,他调用代码库bjar包又依赖d1.0,a又依赖代码库c,而c又依赖库d2.0.虽然pom有顺序优先,然而,如果在项目中引用了d1.0的内容,又引用了d2.0的内容,项目分不清jar了,项目就启动不起来了
怎么查看jar包冲突,是那些jar冲突了?
-
首先打开pom.xml文件
-
在idea里装mavenhelper插件
-
安装完成之后要进行重启idea
-
点开pom.xml就能看到
-
conflicts就是冲突的意思,下面就是发生冲突的jar和版本
-
然后就是一个一个进行处理
-
点击jump to source,就会跳转到具体引入这个jar的pom文件的具体情况
-
点击exclude,就会将该jar从本项目中排除掉,就是剔除掉,本项目不再使用该jar,这样本项目中就不存在多版本的某个jar包,一个个去解决,解决完成之后就能启动了