注释旧依赖仍残留旧Jar四大原因+分步解决(IDEA+Maven)

注释旧依赖仍残留旧Jar四大原因+分步解决(IDEA+Maven)

一、核心3个根本原因

1.【最常见:传递依赖带入旧包】(注释直接依赖没用)

旧包不是你直接写的dependency引入,是别的第三方依赖A/B/C内部间接依赖了旧版本Jar。

例:注释xxx-old:1.0,但common-util:2.0内部自带依赖xxx-old:1.0,Maven自动传递引入,External Libraries依旧存在旧包。

2.【IDEA缓存没刷新,Reimport只刷新pom不删缓存】

手动点Reload All Maven Projects只是重新解析pom,不会清空IDEA本地索引缓存、编译缓存,IDE仍读取旧类路径。

3.【Maven本地仓库缓存残留】

.m2/repository本地仓库已经下载过旧包,Maven默认优先读本地缓存,不会自动删除旧目录。

4.【父pom/dependencyManagement锁定版本】

父工程统一管控版本,子模块注释无效,仍继承旧版约束。

二、快速排查(先查来源)

  1. 终端执行命令查依赖链路,定位谁带了旧包:
shell 复制代码
# windows
mvn dependency:tree | findstr 包名
# mac/linux
mvn dependency:tree | grep 包名

输出能看到:A依赖 → B依赖 → 旧版本jar

IDEA装Maven Helper插件,打开pom→Dependency Analyzer一键看冲突依赖、快速排除

三、分步修复顺序(从上到下执行)

① 传递依赖代码排除(找到引入旧包的依赖,加exclusions)

xml 复制代码
<dependency>
    <groupId>第三方包groupId</groupId>
    <artifactId>第三方包artifactId</artifactId>
    <version>xxx</version>
    <!-- 排除里面自带的旧包 -->
    <exclusions>
        <exclusion>
            <groupId>旧包groupId</groupId>
            <artifactId>旧包artifactId</artifactId>
        </exclusion>
    </exclusions>
</dependency>

再在pom正常新增新版依赖

② 命令强制更新+清理本地缓存

shell 复制代码
# -U强制拉新包、清理target
mvn clean compile -U

无效就手动进.m2/repository删除旧包整个文件夹,让maven重新下载新版。

③ IDEA清缓存

File → Invalidate Caches / Restart → Invalidate and Restart,重启后自动重建依赖索引。

④ 关闭Maven离线模式

右侧Maven面板取消勾选Work offline,离线会永远读本地旧缓存。

四、最简总结

注释只能干掉自己手写的依赖,干不掉别的包偷偷带进来的传递依赖,必须exclusion+清缓存两步。

相关推荐
Java内核笔记3 分钟前
万字避坑!Spring Boot 3.x 升 4.0 最全升级指南(附 Migration Checklist,建议收藏⭐)
java·后端
cfm_29141 小时前
SpringBoot启动原理
java·spring boot·spring
漫随流水2 小时前
Java——springboot web案例
java·开发语言·spring boot
从此以后自律2 小时前
Java Object 类常用方法全讲解
java·开发语言
念何架构之路2 小时前
Docker 容器状态机 学习
java·学习·docker
你有我备注吗2 小时前
SQL学习之查询
java·sql·学习
xixi09243 小时前
JMeter5.6.3基础使用教程1
java·开发语言
带刺的坐椅3 小时前
用 Solon ReActAgent 落地发票识别与智能报销
java·llm·solon·react-agent
罗超驿3 小时前
15.Java异常处理:从束手无策到从容应对
java·开发语言
Co_Hui3 小时前
Java 基础
java·开发语言