网易首页 > 网易号 > 正文 申请入驻

简化Maven项目依赖:优雅去除未使用Jar包

0
分享至

钓友宝 (微信小程序):一款专门为 钓友 开发的 免费的 分享钓点地图与实时天气的软件,地图中标记了所有野钓、钓场、公共水域等的精确位置,支持导航功能。
一、为什么要做这件事?

自从我踏入职场,便历经了技术革新的数次浪潮。从最初的.Net FrameworkWinformWPF,到Asp.Net MVCAsp.Net MVC WebApi,再到Asp.Net Core 2.x的广泛应用,我始终深耕于.net领域。

然而,随着技术的不断演进,我逐渐发现.net相关的工作机会变得稀少。在出租屋内,我自学了一个月的前端技术,竟意外地获得了进入某知名企业的机会,从而开启了全新的前端探索之旅。如今,我又迈入了运维的新领域。回顾过往,每一步都充满了挑战与不易。

目前,我的主要工作是为客户提供私有化项目的售后技术支持。在日常工作中,项目经常会因为客户方的漏洞扫描而暴露出一些jar包的漏洞问题,需要进行紧急修复或升级。

二、怎么做?

对于Maven项目,处理起来相对简单。Maven自身提供了一款强大的依赖分析工具,只需简单的命令输入即可轻松实现。在IntelliJ IDEA中,你可以切换到Terminal窗口,或者在命令行中导航至项目根目录,执行以下命令:

mvn dependency:analyze

随后,仔细查看控制台输出的日志信息,特别关注以下几个部分:

[INFO] --- maven-dependency-plugin:2.8:analyze (default-cli) @ xxxproject ---
[WARNING] Used undeclared dependencies found:
[WARNING]    org.springframework:spring-beans:jar:4.0.0.RELEASE:compile
[WARNING]    org.springframework:spring-context:jar:4.0.0.RELEASE:compile
[WARNING] Unused declared dependencies found:
[WARNING]    com.alibaba:dubbo:jar:2.5.3:compile
[WARNING]    com.baidu.disconf:disconf-client:jar:2.6.32:compile
[WARNING]    org.mybatis:mybatis:jar:3.2.7:compile
[WARNING]    org.mybatis:mybatis-spring:jar:1.2.2:compile
[WARNING]    mysql:mysql-connector-java:jar:5.1.41:compile
[WARNING]    com.alibaba:druid:jar:1.0.9:compile
[WARNING]    com.github.sgroschupf:zkclient:jar:0.1:compile
[WARNING]    org.apache.zookeeper:zookeeper:jar:3.4.6:compile
[WARNING]    org.springframework:spring-jdbc:jar:4.0.0.RELEASE:compile
[WARNING]    org.slf4j:log4j-over-slf4j:jar:1.7.5:compile
[WARNING]    org.slf4j:jcl-over-slf4j:jar:1.7.5:runtime
[WARNING]    ch.qos.logback:logback-classic:jar:1.0.13:compile   

接下来,我们将详细解读日志中Used undeclared dependencies foundUnused declared dependencies found

Used undeclared dependencies found

这一部分指的是项目中实际使用了某个依赖包,但并未在pom.xml文件中显式声明。这些依赖包可能是通过其他依赖间接引入的。

插播一下 Java精选面试题 (微信小程序):5000+道面试题和选择题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计、大厂真题等,在线随时刷题!

例如,假设你的项目在pom.xml中声明了对A.jar的依赖,但未声明对B.jar的依赖。而A.jar的依赖树中又包含了对B.jar的依赖。通过运行mvn dependency:analyze命令,如果输出如下警告:

mvn dependency:analyze

出现

[WARNING] Used undeclared dependencies found: B.jar

这意味着你的项目代码中实际上使用了B.jar中的类或接口。在这种情况下,你应该将B.jar添加到项目的pom.xml文件中,以确保依赖关系的正确声明。

Unused declared dependencies found

这一部分则是指你在项目的pom.xml文件中声明了某个依赖包,但在实际的项目代码中并未使用到它。这些依赖包可能是不必要的,可以考虑从pom.xml中移除。

推荐划水摸鱼地址: https://www.yoodb.com/slack-off/home.html

然而,在删除这些依赖之前,请务必注意以下几点:

  • “未使用”的定义仅限于main/java和test源代码目录,不包括配置文件或其他可能的扩展点。

  • 在删除依赖之前,务必备份pom.xml文件,以防万一误删重要依赖导致的问题。

  • Maven的依赖分析工具并非万能,有时可能会产生误报。因此,在删除任何依赖后,都应进行充分的测试以验证项目的稳定性。

三、什么时候做?
  • 新项目初始化时:在创建新项目并添加依赖时,务必谨慎选择所需的jar包,避免盲目复制旧项目的依赖配置,从而减少后续不必要的清理工作。

  • 功能代码重构时:在进行功能代码的重构过程中,可以顺便进行一次依赖项的审查与清理。由于后续还有自测和提测等环节,即使有误删的情况也能及时发现并修复。

四、有什么风险要注意的?

结果仅供参考:依赖分析工具的结果并非绝对准确,可能存在误判的情况。例如,某些工具可能无法识别某些特殊的使用场景(如注解处理器等)。因此,在删除依赖后,请务必进行全面的测试以验证项目的正确性。

老项目接手时的注意事项:当接手一个遗留的老项目时,可能会发现大量的依赖问题。然而,在初次接手时并不建议立即进行此类操作。由于对项目的不熟悉,贸然删除依赖可能会引发一系列难以定位的问题,从而浪费大量的时间和精力。建议在充分了解项目结构和业务逻辑后再进行此类优化工作。

五、补充一个快捷方法

使用 IntelliJ IDEA 自带的 maven 工具

使用方法

  • 打开IntelliJ IDEA,导航至项目的pom.xml文件所在目录。

  • 右键点击pom.xml文件,选择“Maven”菜单中的“Analyze Dependencies”选项。

  • IntelliJ IDEA将自动分析项目的依赖关系,并在弹出的窗口中展示分析结果。你可以根据分析结果进行相应的操作,如添加缺失的依赖或删除未使用的依赖等。

通过以上步骤,你可以在IntelliJ IDEA中轻松管理项目的依赖关系,确保项目的稳定性和可维护性。

作者:bug猎人 https://juejin.cn/post/7384636970033905714

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注

文章有帮助的话,点在看,转发吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
Token吞金兽发力!阿里百度同日官宣,云厂商涨价潮来袭

Token吞金兽发力!阿里百度同日官宣,云厂商涨价潮来袭

第一财经资讯
2026-03-18 19:50:12
君子报仇20年不晚:伊拉克人民重回反美反侵略战场!

君子报仇20年不晚:伊拉克人民重回反美反侵略战场!

胜研集
2026-03-17 14:18:19
伊朗足坛一哥,遭国家队开除+被没收财产,因与阿联酋领导人合影

伊朗足坛一哥,遭国家队开除+被没收财产,因与阿联酋领导人合影

小金体坛大视野
2026-03-18 18:14:30
半夜楼下“飞机轰隆”,清晨6点准时剁肉……多个小区居民吐槽:太闹心!

半夜楼下“飞机轰隆”,清晨6点准时剁肉……多个小区居民吐槽:太闹心!

环球网资讯
2026-03-18 15:58:28
倪妮新剧发布会:鲁豫瘦到脱相,闫妮像喝多,满脸褶的董洁赢麻了

倪妮新剧发布会:鲁豫瘦到脱相,闫妮像喝多,满脸褶的董洁赢麻了

阿凫爱吐槽
2026-03-18 06:33:36
父子决裂姐弟内斗:数十万亿民企资产,正在上演最残酷的权力游戏

父子决裂姐弟内斗:数十万亿民企资产,正在上演最残酷的权力游戏

李砍柴
2026-03-18 19:08:51
都赖他?金斯基首回合两度送大礼,热刺最终两球之差出局

都赖他?金斯基首回合两度送大礼,热刺最终两球之差出局

懂球帝
2026-03-19 06:27:10
男子长期接触宠物不洗手 手部面部麻木 确诊颅内感染寄生虫

男子长期接触宠物不洗手 手部面部麻木 确诊颅内感染寄生虫

闪电新闻
2026-03-18 23:38:15
被朱易取关仅9天,人民日报“点名”苏翊鸣,原来谷爱凌说的没错

被朱易取关仅9天,人民日报“点名”苏翊鸣,原来谷爱凌说的没错

阿纂看事
2026-03-17 14:45:42
阿根廷正式退出世卫组织

阿根廷正式退出世卫组织

新京报
2026-03-18 07:13:04
莱万:从比赛一开始我们就想要进球;相信球队会实现赛季目标

莱万:从比赛一开始我们就想要进球;相信球队会实现赛季目标

懂球帝
2026-03-19 06:38:10
不要让孩子看手机!研究表明幼儿每多看30分钟屏幕,语言发育迟缓风险激增49%

不要让孩子看手机!研究表明幼儿每多看30分钟屏幕,语言发育迟缓风险激增49%

齐天候
2026-03-17 15:51:42
突变!原油大跌!黄金、白银震荡!特朗普,最新表态!降息,大消息!

突变!原油大跌!黄金、白银震荡!特朗普,最新表态!降息,大消息!

证券时报e公司
2026-03-18 13:46:54
发展联盟又一次拿下高分!火箭到底什么时候才会将他进行转正?

发展联盟又一次拿下高分!火箭到底什么时候才会将他进行转正?

稻谷与小麦
2026-03-19 00:42:10
欧冠11场造11球!25岁天才太犀利,哈兰德和凯恩都比不了

欧冠11场造11球!25岁天才太犀利,哈兰德和凯恩都比不了

足球狗说
2026-03-18 18:44:40
布伦特原油期货在结算后交易中延续涨势,涨幅扩大至7%,报111.32美元/桶

布伦特原油期货在结算后交易中延续涨势,涨幅扩大至7%,报111.32美元/桶

每日经济新闻
2026-03-19 05:23:07
邵二期国足名单:大连全军覆没!李昊等十大U23入选 无彭啸贺一然

邵二期国足名单:大连全军覆没!李昊等十大U23入选 无彭啸贺一然

刀锋体育
2026-03-18 16:44:14
集结周润发、郭富城、梁家辉、古天乐!《寒战1994》官宣

集结周润发、郭富城、梁家辉、古天乐!《寒战1994》官宣

南方都市报
2026-03-18 23:19:08
国台办:古屋圭司言论严重违背一个中国原则,不自量力,我们对此坚决反对

国台办:古屋圭司言论严重违背一个中国原则,不自量力,我们对此坚决反对

环球网资讯
2026-03-18 13:06:08
“首次”!美媒爆:受中东局势影响,美国务院下令美国“在全球所有外交机构”立即进行安全评估

“首次”!美媒爆:受中东局势影响,美国务院下令美国“在全球所有外交机构”立即进行安全评估

环球网资讯
2026-03-18 12:34:20
2026-03-19 07:03:00
Java精选
Java精选
一场永远也演不完的戏
1778文章数 3859关注度
往期回顾 全部

科技要闻

实测QClaw:腾讯突袭,给微信装上AI大脑

头条要闻

伊朗发起第63轮行动:战争进入“新阶段”

头条要闻

伊朗发起第63轮行动:战争进入“新阶段”

体育要闻

守住底线的中国女足,下一步该怎么走?

娱乐要闻

姚晨侯雯元绯闻升级 双方否认称是谣言

财经要闻

楼市最大的"赌徒",正在批量抄底老破小

汽车要闻

价格10万级 四驱中级电混轿车银河星耀7来了

态度原创

本地
亲子
艺术
旅游
房产

本地新闻

春色满城关不住|粉色浪漫已至,来宁波共赏樱花雨

亲子要闻

小孩不会说谎,但是会胡说八道

艺术要闻

百年前欧洲美女老照片,惊艳到你了吗?快来看看!

旅游要闻

音乐节带火“演出经济” 巴西圣保罗旅游市场升温

房产要闻

大规模召回离职员工?碧桂园最新回应!

无障碍浏览 进入关怀版