1.maven的dependencyManagement中定义的依赖声明优先级高于传递依赖
最近在弄一个spring-boot项目的时候,发现引入的resilience4j-spring-boot2-1.7.1的间接依赖resilience4j-spring变成了1.7.0,但是resilience4j-spring-boot2-1.7.1的定义的间接依赖resilience4j-spring分明是1.7.1


由此感到非常疑惑,排查一番猜测猜测可能和dependencyManagement有关,因为我当前的项目引入和spring-cloud-dependencies的dependencyManagement的元素。而后者的有定义resilience4j的依赖声明。而查询官方文档发现,DependencyManagement定义的依赖的作用不只是,后续引入的相关依赖不用显示的指定版本号,另一个作用是其优先级会比传递依赖中定义版本的要高(即dependencyManagement定义的版本会覆盖传递依赖定义的版本)。这点要注意了。
maven官方文档描述

在Spring Boot项目中,遇到resilience4j版本冲突问题,发现dependencyManagement的优先级高于传递依赖。即使resilience4j-spring-boot2依赖的是1.7.1,但由于spring-cloud-dependencies的dependencyManagement中定义了resilience4j的版本,导致实际使用的是1.7.0。理解Maven的dependencyManagement如何影响依赖版本选择对于避免版本冲突至关重要。
2241





