适配Gradle 7.2时spring-rabbit-2.4.4.module元数据解析失败求助
解决Gradle 7.2解析spring-rabbit:2.4.4依赖的JSON格式错误问题
问题根源
私有仓库中存储的spring-rabbit-2.4.4.module文件存在JSON格式错误(第15行第1列),而Gradle 7.2对Module元数据的JSON解析采用严格模式,默认不允许格式不规范的JSON,因此触发解析失败,提示需要设置JsonReader.setLenient(true)。该依赖由org.springframework.cloud:spring-cloud-starter-bus-amqp:3.1.0间接引入。
可行解决方案
1. 修复私有仓库中的Module文件
- 下载仓库对应路径的
spring-rabbit-2.4.4.module文件,定位到第15行第1列,修正JSON格式问题(比如多余逗号、未闭合引号、语法错误等),重新上传至私有仓库对应目录。 - 若仓库存在缓存问题,可清理该依赖的仓库缓存后,从官方源同步正确的Module元数据。
2. 配置Gradle启用宽松JSON解析
在项目根目录的build.gradle(或settings.gradle)中添加以下配置,让Gradle对Module元数据采用宽松解析规则:
dependencies { components { all { metadata { if (it instanceof ComponentMetadata) { it.withModule { module -> module.metaDataParsers.java { parser -> parser.setLenient(true) } } } } } } }
该配置兼容Gradle 6.8+,Gradle 7.2可直接使用,多模块项目建议在根配置中添加。
3. 强制Gradle使用POM元数据替代Module元数据
修改仓库配置,禁用Module元数据解析,优先使用POM文件:
repositories { maven { url "https://nexus.btsint.com/nexus/Hercules" metadataSources { mavenPom() artifact() // 禁用Gradle Module元数据解析 // gradleMetadata() } } }
此方法会跳过.module文件,直接通过pom.xml解析依赖关系。
4. 辅助排查与缓存清理
- 执行命令
./gradlew compileJava --debug获取详细错误日志,明确JSON格式错误的具体内容,便于精准修复。 - 清理本地Gradle缓存:删除
~/.gradle/caches/modules-2/files-2.1/org.springframework.amqp/spring-rabbit/2.4.4目录,重新拉取依赖,排除本地缓存损坏的可能。
内容的提问来源于stack exchange,提问作者KVL
相关产品推荐
相关产品推荐

