注释旧依赖仍残留旧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+清缓存两步。

相关推荐
daidaidaiyu2 小时前
ThingsBoard 集群的核心逻辑源码分析
java
我可能是个假开发3 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
caoerzhong3 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
【JAVA】玩家4 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
Wang's Blog4 小时前
Java框架 SpringCloud 快速入门: 实现 Feign 最佳实践(抽取方式)
java·spring cloud
MandalaO_O5 小时前
IDEA 开发(快捷键 + 调试 + 序列化)
java·ide·intellij-idea
xiaoqiMikko6 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
狼爷7 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路7 小时前
zap扩展生态与总结
java·前端·数据库
第七页独白8 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库