为何Spring Cloud Sleuth未纳入Spring Cloud BOM?Gradle依赖问题
问题原因与解决方案
为什么Sleuth依赖无法解析?
Spring Cloud 2022.0.x(代号Kilburn)版本开始,Spring Cloud Sleuth已从Spring Cloud核心依赖管理BOM(spring-cloud-dependencies)中分离,成为独立维护的组件,拥有自己的版本线和专属BOM。你当前引入的spring-cloud-dependencies:2022.0.4里并不包含Sleuth的依赖版本定义,所以Gradle无法自动解析spring-cloud-starter-sleuth的版本,导致报错。
解决方法
在根项目的build.gradle中,单独引入Spring Cloud Sleuth的专属BOM,并指定与当前Spring Cloud版本匹配的Sleuth版本:
- 首先在
ext块中添加Sleuth版本(Spring Cloud 2022.0.4对应Sleuth 3.1.4):
ext { springSecurityOauthVersion = '5.6.2' springCloudVersion = '2022.0.4' springBootVersion = '2.7.17' springCloudSleuthVersion = '3.1.4' // 添加Sleuth版本定义 }
- 在
dependencyManagement的imports块中加入Sleuth的BOM:
allprojects { dependencyManagement { imports { mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" mavenBom "org.springframework.cloud:spring-cloud-sleuth-dependencies:${springCloudSleuthVersion}" // 引入Sleuth专属BOM } } }
修改完成后重新同步Gradle,spring-cloud-starter-sleuth就能正常解析了。
是否存在包含所有Spring Cloud依赖的BOM?
不存在所谓“包含所有Spring Cloud依赖”的统一BOM。Spring Cloud采用模块化设计,不同组件有独立的维护节奏和生命周期,核心BOM(spring-cloud-dependencies)仅包含核心组件的依赖管理,像Sleuth这类拆分出去的组件需要单独引入其专属BOM。你只需根据项目实际使用的组件,按需引入对应的BOM或直接声明依赖即可。
内容的提问来源于stack exchange,提问作者Sergey Tsypanov
相关产品推荐
相关产品推荐

