Spring Boot项目在IntelliJ执行Maven命令报依赖缺失/重复错误求助
Maven构建报错修复方案
现状说明
- 业务目标:通过IntelliJ的Maven运行配置生成Jar包,已配置两个Maven执行项:
- clean配置:执行命令
clean -U - install配置:执行命令
install
- clean配置:执行命令
- 故障现象:每次运行clean配置时稳定抛出POM解析失败错误,完整报错如下:
[ERROR] Some problems were encountered while processing the POMs: 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: com.jayway.jsonpath:json-path:jar -> duplicate declaration of version (?) @ line 141, column 21 'dependencies.dependency.version' for org.hibernate:hibernate-validator:jar is missing. @ line 57, column 21 The build could not read 1 project
已完成但无效的排查操作
- 重新导入Maven项目
- 删除本地
.m2仓库全量缓存 - 手动移除报错提示中涉及的依赖
- 清除IntelliJ全部缓存并重启
问题根因分析
报错提示的行号不属于你当前项目的POM文件,是Maven解析过程中加载的上游依赖POM的行号,这也是之前手动在项目POM里定位对应行、移除依赖没有效果的核心原因。
结合两个报错特征推导,问题根源来自和Spring Boot 2.4.4版本依赖管理规则不兼容的第三方依赖引入:
- 第一冲突源:
org.springframework.security.oauth:spring-security-oauth2:2.0.14.RELEASE
这个2018年发布的老版本OAuth2依赖,本身会传递引入无版本声明的com.jayway.jsonpath:json-path,和Spring Boot BOM统一管理的json-path版本产生重复声明冲突;同时这个老依赖的POM结构不符合Maven最新的解析校验规则,会打乱Spring Boot BOM对hibernate-validator的版本管理逻辑,触发缺失版本的报错。 - 第二潜在冲突源:和当前Spring Boot版本依赖管理范围不匹配的第三方依赖
包括com.amazonaws:aws-java-sdk-appstream:1.11.133、net.sf.jasperreports:jasperreports:6.16.0,这些依赖的版本发布时间和Spring Boot 2.4.4的发布时间差较大,传递依赖的版本规则会进一步干扰POM解析流程,放大错误。
具体修复操作
- 排除不兼容老依赖的冲突传递包
针对spring-security-oauth2依赖,添加排除规则移除重复的json-path依赖,写法如下:<dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.0.14.RELEASE</version> <exclusions> <!-- 排除重复声明的json-path依赖 --> <exclusion> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> </exclusion> </exclusions> </dependency> - 校准其他高版本差依赖的传递规则
执行mvn dependency:tree命令排查aws-java-sdk-appstream、jasperreports两个依赖的传递链路,若发现存在重复引入、无版本声明的依赖,同样添加排除规则对齐Spring Boot BOM的版本管理逻辑。 - 重新执行构建命令
先执行clean -U强制拉取最新的依赖元数据刷新本地缓存,再执行install完成Jar包构建。
内容的提问来源于stack exchange,提问作者Owais Kalimi
相关产品推荐
相关产品推荐

