You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven传递依赖版本异常:升级spring-boot-starter-security后版本未更新

问题原因及解决方案

以下是导致Maven未使用spring-boot-starter-security:3.0.6对应最新传递依赖的常见原因及解决办法:

1. Spring Boot父POM的版本锁定

Spring Boot的spring-boot-starter-parent通过<dependencyManagement>统一管控所有配套依赖版本。如果你的项目继承了旧版本(比如3.0.0)的父POM,即便单独升级了spring-boot-starter-security,父POM里硬编码的spring-security-*(6.0.0)版本会覆盖starter传递的新版本。

  • 解决:优先升级父POM版本至3.0.6(Spring Boot版本与Security版本严格配套,这是最规范的做法);若无法升级父POM,可在项目POM的<dependencyManagement>中显式声明spring-security-config、spring-security-core等依赖的目标版本(对应3.0.6 starter的版本为6.0.6)。

2. 项目显式声明了旧版本依赖

如果你的POM中直接引入了spring-security-config或spring-security-core并指定了6.0.0版本,Maven会优先使用直接声明的版本,忽略starter的传递依赖版本。

  • 解决:检查POM文件,移除这些直接依赖的版本声明,或者将版本更新为与3.0.6 starter匹配的版本。

3. Maven依赖调解规则触发

Maven依赖调解遵循"路径最短优先"、"路径相同时先声明优先"的规则。如果项目中其他依赖(比如第三方库、自定义starter)也引入了6.0.0版本的Security组件,且依赖路径更短或声明更早,就会被选中。

  • 解决:执行mvn dependency:tree -Dverbose查看完整依赖树定位旧版本来源,然后通过项目POM的<dependencyManagement>强制指定目标版本进行覆盖。

4. 本地仓库缓存过期

Maven本地仓库可能缓存了旧的依赖元数据,导致未拉取远程仓库中starter对应的最新传递依赖信息。

  • 解决:执行mvn clean install -U,-U参数会强制Maven更新依赖元数据并重新拉取最新依赖。

5. 依赖声明存在错误配置

如果spring-boot-starter-security的声明中包含不必要的<exclusions>,或者<scope>设置异常(比如设为provided),可能导致传递依赖版本未生效。

  • 解决:检查starter的依赖声明,移除无关的排除配置,确保<scope>为默认的compile。

内容的提问来源于stack exchange,提问作者Farrukh Nabiyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:05:14