Maven拉取依赖版本异常:Selenium固定为3.141.59无法更新至4.3.0
项目依赖版本升级时出现异常:所有Selenium相关依赖均被锁定为3.141.59版本,即使已手动将依赖配置修改为Selenium 4.3.0版本,配置仍未生效。
- 清空本地m2文件夹,重新下载全部依赖
- 删除项目后重新导入加载
- 执行
mvn clean compile -U命令强制更新依赖
优先检查
<dependencyManagement>版本覆盖问题
Maven依赖仲裁规则中,<dependencyManagement>节点声明的版本优先级远高于普通<dependencies>节点的版本配置。不管是当前POM中配置的<dependencyManagement>,还是项目继承的父POM(比如Spring Boot官方父依赖、公司内部公共父包)中写死了Selenium 3.141.59版本,在普通依赖节点修改版本都不会生效。
解决方法:在当前项目POM的<dependencyManagement>节点中显式声明Selenium 4.3.0版本,直接覆盖上层配置,参考配置如下:<dependencyManagement> <dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.3.0</version> </dependency> <!-- 若项目单独引入了selenium-api、selenium-chrome-driver等Selenium子依赖,统一在此处指定4.3.0版本 --> </dependencies> </dependencyManagement>排查传递依赖引入旧版本问题
在项目根目录执行命令mvn dependency:tree -Dincludes=org.seleniumhq.selenium:*,打印全链路中所有Selenium相关依赖的引入路径,定位是哪个第三方依赖传递引入了3.141.59版本的Selenium。定位到来源依赖后,在该依赖的配置中添加<exclusions>节点排除旧版本Selenium,再显式引入4.3.0版本即可。清理IDE本地缓存
IDE缓存异常经常会导致依赖版本显示不更新,以IDEA为例:先点击右侧Maven面板的「Reload All Maven Projects」按钮全量重载Maven配置;如果仍不生效,执行File -> Invalidate Caches...操作,勾选清除项目缓存后重启IDE即可。检查Maven依赖锁文件
检查项目根目录下是否存在dependency-locks目录、pom.xml.lock这类依赖锁文件(常见于使用Maven版本锁定插件、Spring依赖管理插件开启版本锁的场景)。如果存在这类文件,锁文件中固定的版本会覆盖POM中的配置,直接删除锁文件后重新执行依赖更新命令即可。
内容的提问来源于stack exchange,提问作者user1826602

