声明:小白学习记录,大佬可以划走
✅ 本次问题「完整总结」(全链路核心问题 + 关键踩坑点)
本次报错本质是 「多类 Maven 核心问题叠加」,并非单一的镜像 / 网络问题,且存在优先级层级,也是你前期多次调整配置仍未解决的核心原因,所有问题按「触发顺序 + 严重程度」梳理如下,清晰明了:
一、🔴 【最高优先级】POM 文件「基础语法合规性错误」(根源中的根源)
这是最先触发、阻断所有后续流程的致命问题,优先级远高于镜像 / 仓库 / 缓存,也是前期所有镜像配置优化「无效」的核心原因:
✅ 核心问题:你的多模块工程(
proxy-api/proxy-app)中,所有依赖均缺失<version>版本号标签,仅写了<groupId>和<artifactId>。✅ 致命影响:Maven 会先做「POM 语法校验」,语法不合法时直接终止构建,根本不会执行「依赖下载」步骤,镜像 / 仓库配置再正确也没用。✅ 涉及依赖:Retrofit 全家桶、fastjson、Guava、JJWT、java-jwt、内部子模块proxy-trigger均存在该问题。
二、🔴 【次核心】框架版本「重大变更导致的依赖坐标失效」(补版本号后新触发)
这是你补充完版本号后,新出现JJWT报错的核心原因,属于框架官方的硬性变更,和 Maven 配置无关,纯版本认知坑:
✅ 核心问题:
io.jsonwebtoken:jjwt框架从0.10.0版本开始彻底拆分重构,废弃了「单一 jjwt 依赖坐标」;你使用的0.11.5版本,已无io.jsonwebtoken:jjwt这个包。✅ 踩坑点:旧写法(0.9.x及更早)是单一坐标,0.10.x+必须用拆分后的 3 个子包(jjwt-api+jjwt-impl+jjwt-jackson),缺一不可。
三、🟠 【配置层】Maven settings.xml「仓库 / 镜像配置 2 个关键错误」
这是前期存在的基础配置问题,虽不是最先触发,但会在「POM 语法修复后」暴露,导致依赖下载失败 / 找错仓库:
✅ 问题 1:镜像配置「冗余 + 协议不统一」
初始配置中同时存在 2 个阿里云镜像(http旧版+https新版),协议混用 + 节点冗余,可能导致 Maven 依赖解析冲突,且http协议在新版 Maven / 企业网络中易被拦截。
✅ 问题 2:仓库类型「严重错配」(快照仓库找正式版)
配置的sonatype-oss-snapshots是快照仓库,仅存放带-SNAPSHOT后缀的开发版依赖;但你让它去下载0.11.5/2.11.0这类「正式版」依赖,必然找不到,属于典型的仓库使用误区。
<repository>
<id>sonatype-oss-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases> <enabled>false</enabled> <!-- ✅ 关键:禁用快照仓库的正式版下载 --> </releases> <snapshots> <enabled>true</enabled> <!-- 仅允许下载快照版 --> </snapshots>
</repository>
四、🟡 【辅助性】本地仓库「缓存污染」+ 多模块「版本管理不规范」
这两类问题属于「锦上添花」,会导致依赖下载成功后,IDE 仍标红 / 引用异常,是最后需要收尾的问题:
✅ 问题 1:本地仓库缓存污染
前期多次下载失败,导致Retrofit/JJWT目录下生成了损坏的缓存文件 /lastUpdated 无效文件,即使后续配置正确,Maven 也会优先读取缓存,导致依赖仍无法正常引用。
✅ 问题 2:多模块版本管理不规范
作为聚合工程,未在「根 POM」中用<dependencyManagement>统一管理版本,子模块依赖版本分散配置,既容易遗漏,也会导致多模块版本不一致,属于企业开发的不规范写法。
✅ 核心解决原则(帮你规避后续 90% 的 Maven 依赖坑)
本次排查的核心规律,也是 Maven 的核心运行逻辑,记住后能少走 90% 弯路:
✅ 【优先级铁律】Maven 执行顺序:POM 语法校验 > 依赖版本解析 > 仓库镜像匹配 > 本地缓存读取 > 远程依赖下载
任何环节失败,都会直接终止后续流程,语法错误是最高优先级的阻断项。
✅ 【依赖铁律】框架新版本必查官方文档
主流框架(Retrofit/JJWT 等)大版本升级时,大概率会变更依赖坐标 / 包结构,不要沿用旧写法,优先查官方最新依赖配置。
✅ 【仓库铁律】版本类型 ↔ 仓库类型 严格匹配
- 正式版(x.y.z,如 2.11.0)→ 走阿里云 / 中央仓库(RELEASE 仓库);
- 快照版(x.y.z-SNAPSHOT)→ 走快照仓库(如 sonatype-oss-snapshots);二者绝对不能混用。
✅ 最终解决链路(极简复盘)
plaintext
补全所有依赖<version>版本号 → 修正JJWT 0.11.5的拆分依赖坐标 → 精简阿里云镜像为单一HTTPS版本 → 禁用快照仓库的正式版下载 → 清理本地损坏缓存 → 执行强制更新命令
✅ 所有问题按上述链路修复后,最终实现依赖 100% 下载成功、工程编译通过!