Spring Boot:为何传递性starter依赖未升级至指定版本?
spring-boot版本未同步升级的原因及解决办法
核心原因
- 父pom的版本管控优先级更高:你的项目依赖的
spring-boot-starter-parent版本是2.6.8,这个父pom的dependencyManagement模块会统一锁定所有Spring Boot生态依赖的版本,其中就包括spring-boot的2.6.8版本。 - 依赖传递版本被覆盖:虽然你给
spring-boot-starter指定了2.7.8版本,但spring-boot-starter依赖的spring-boot版本会被父pom里的版本管控规则覆盖——Maven中,dependencyManagement声明的版本优先级高于依赖传递带来的版本。
解决办法
方案1:统一升级父pom版本(推荐)
Spring Boot的父pom设计初衷就是统一项目中所有Spring Boot相关依赖的版本,保持父pom和starter版本一致是最规范的做法,直接修改父pom版本为2.7.8即可:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.8</version> <relativePath/> <!-- lookup parent from repository --> </parent>
方案2:手动覆盖版本(仅临时场景使用)
如果无法升级父pom,可以在自己项目的dependencyManagement中手动指定spring-boot的版本,强制覆盖父pom的设定:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot</artifactId> <version>2.7.8</version> </dependency> </dependencies> </dependencyManagement>
内容的提问来源于stack exchange,提问作者Thomas Auinger
相关产品推荐
相关产品推荐

