Spring Boot父依赖版本未自动引入:hibernate-core编译缺版本报错
问题原因与解决方案
核心问题
你在主POM的dependencyManagement节点中手动添加了org.hibernate:hibernate-core的依赖声明,但未指定版本。这会覆盖Spring Boot父POM中已预定义的该依赖版本配置——Maven解析依赖时,会优先使用你显式加入dependencyManagement的条目,而这个条目缺少版本信息,因此编译报错。
解决方案
有两种可行的处理方式:
方式1:移除主POM中多余的dependencyManagement声明
Spring Boot父POM已经在自身的dependencyManagement中维护了hibernate-core的版本,你无需重复声明。直接删除主POM里这段代码:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <!-- <version>${hibernate.version}</version> --> </dependency>
删除后,子POM中直接引入hibernate-core依赖时,会自动继承Spring Boot父POM提供的版本。
方式2:保留dependencyManagement声明并指定版本
如果需要在主POM的dependencyManagement中统一管理该依赖,直接引用Spring Boot父POM定义的hibernate.version属性即可,无需手动写死版本号:
<dependencyManagement> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> </dependencies> </dependencyManagement>
补充说明
Baeldung的说法是正确的:Spring Boot Starter Parent确实会帮你自动管理大部分常用依赖的版本,但这个机制的前提是你没有在自己的项目POM中用相同的groupId/artifactId覆盖dependencyManagement中的配置。一旦你手动添加了同依赖的dependencyManagement条目,Maven就会优先使用你的配置,若配置缺少版本则会报错。
内容的提问来源于stack exchange,提问作者gokul
相关产品推荐
相关产品推荐

