找回密码
 立即注册
首页 业界区 业界 记录一次maven依赖冲突的解决

记录一次maven依赖冲突的解决

碣滥 5 天前
现象

项目依赖selenium-java的4.32版本,但是未发现org.openqa.selenium.devtools.DevTools类。如下所示:
1.png

2.png

问题排查

定位问题
第一反应肯定是依赖冲突了,第一步先打开idea的maven工具看一下依赖树,结果如下:
3.png

从图中可以看到4.32依赖了很多3.14.0的依赖,并且没有任何omitted for duplicate 类似的提示, 怀疑selenium-java是不是本身走的就是部分升级的路子,点进selenium-java查看其POM文件发现其依赖如下:
4.png

显然selenium-java的4.32版本全部依赖都是显示的声名的4.32版本,这里基本可以确认依赖存在冲突,可以确定存在依赖冲突。但是我们通过Idea依赖树看,没有omitted for duplicate 提示,这就有点坑了。
冲突定位
既然有了冲突剩下的就是定位冲突,先引入依赖分析插件,如下所示(不引入分析不出来任何问题):
5.png

执行命令mvn dependency:resolve -Dincludes=org.seleniumhq.selenium 查看依赖树如下:
6.png

可以看到有很多omitted for duplicate说明依赖确实存在问题,但是只有selenium-java这一个依赖树。看起来又不像有冲突的样子,但是却有version managed这样的提示,猜测冲突来源于maven依赖管理dependencyManagement声名。执行命令mvn help:effective-pom 查看最终项目所有依赖,如下所示:
7.png

可以看到在dependencyManagement声名的selenium全是3.14。然后定位发现Sspring-boot-starter-parent的2.1.7版本就有selenium的版本管理。所以Springboot 确实做了很多依赖管理,连selenium都有,恐怖如斯,学到了。至此问题算是定位到了。
问题解决

既然知道了问题所在,直接升级springboot或者显示的指定selenium-java依赖的版本即可,如下所示:
  1.   
  2.         <dependency>
  3.             <groupId>org.seleniumhq.selenium</groupId>
  4.             selenium-java</artifactId>
  5.             <version>4.32.0</version>
  6.         </dependency>
  7.         
  8.         <dependency>
  9.             <groupId>org.seleniumhq.selenium</groupId>
  10.             selenium-api</artifactId>
  11.             <version>4.32.0</version>
  12.         </dependency>
  13.         
  14.         <dependency>
  15.             <groupId>org.seleniumhq.selenium</groupId>
  16.             selenium-chrome-driver</artifactId>
  17.             <version>4.32.0</version>
  18.         </dependency>
  19.         
  20.         <dependency>
  21.             <groupId>org.seleniumhq.selenium</groupId>
  22.             selenium-devtools-v136</artifactId>
  23.             <version>4.32.0</version>
  24.         </dependency>
  25.         
  26.         <dependency>
  27.             <groupId>org.seleniumhq.selenium</groupId>
  28.             selenium-remote-driver</artifactId>
  29.             <version>4.32.0</version>
  30.         </dependency>
  31.         <dependency>
  32.             <groupId>org.seleniumhq.selenium</groupId>
  33.             selenium-support</artifactId>
  34.             <version>4.32.0</version>
  35.         </dependency>
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册