当前位置: 首页 > news >正文

springBoot Maven 剔除无用的jar引用

目录

Used undeclared dependencies found

Unused declared dependencies found


当项目经过一段时间的开发和维护后,经常会遇到项目打包速度变慢的问题。这通常与项目中包含大量的jar依赖有关,这些依赖之间的关系错综复杂。这种情况在项目维护过程中是非常常见的。由于开发人员在修复bug或开发新功能时,往往会简单地向项目中添加新的jar依赖,而没有对现有依赖进行清理或优化。因此,我们需要一种方法来分析项目中哪些jar依赖是真正被使用的,哪些依赖则可能已经不再需要,从而帮助我们优化项目结构,提高构建效率。

我们可以使用Maven analyze来进行分析,使用如下命令:

mvn dependency:analyze

在idea的终端输入命令,则会输出如下的日志:

当你运行 mvn dependency:analyze 命令时,Maven 会对项目的依赖进行分析,并报告一些潜在的问题。日志中的Used undeclared dependencies found和Unused declared dependencies found是两个常见的警告信息。

Used undeclared dependencies found

Used undeclared dependencies found这个警告表示项目中使用了某些未在 pom.xml 文件中声明的依赖。但是它并不是直接的依赖(就是说没有在pom中直接声明),是通过引入传递下来的包。换句话说,项目中有一些类或资源是从这些未声明的依赖中引用的,但这些依赖没有被明确地添加到项目的依赖管理中。

举个例子:project在pom中声明了A.jar的依赖(没有声明B.jar的依赖) A.jar的依赖关系:A.jar -> B.jar 通过mvn dependency:analyze出现 [WARNING] Used undeclared dependencies found: B.jar 就说明project中的代码用到了B.jar的代码 这个时候你就可以把B.jar直接声明在pom中。

Unused declared dependencies found

Unused declared dependencies found这个警告表示项目中声明了一些没有被使用的依赖。换句话说,这些依赖在项目中没有任何引用或使用。

假设你在 pom.xml 中声明了一个依赖 com.example:example-lib,但在项目代码中并没有使用任何来自该库的类或资源。运行 mvn dependency:analyze 后,你会看到类似如下的警告:

[WARNING] Unused declared dependencies found:
com.example:example-lib:jar:1.0.0:compile

但是这里我们需要注意:这里说的实际代码没有用到指的是在main/java和test里没有用的但是并不是意味着真的没有用到这些包,有可能配置文件中引用或者其他扩展点自动加载这些包,所以我们在删除依赖的时候一定要小心,做好备份,因为这类引用maven是分析不出来的。

要注意的还有,这个检测的结果仅供参考,有时也不准确,如org.projectlombok:lombok:jar:1.16.20:provided,实际上在项目中有使用到它的注解@Data,这个属于误判。要注意剔除依赖后多测试,工具毕竟有毕竟的缺陷性。

对于这种,最好是先注释,测试没有问题的话再删除,这样也不用做备份,随时取消注释。

此外,我们在新项目建立时,引用jar包时要慎重,不要一股脑儿直接拷贝老项目的依赖,避免后期又花时间来剔除。

http://www.lryc.cn/news/508757.html

相关文章:

  • malloc 分配大堆块(128KB)的一次探索
  • Android -- 双屏异显之方法二
  • 电脑使用CDR时弹出错误“计算机丢失mfc140u.dll”是什么原因?“计算机丢失mfc140u.dll”要怎么解决?
  • 使用RDMA技术构建无损网络
  • vscode 识别git目录
  • OpenCV相机标定与3D重建(26)计算两个二维点集之间的部分仿射变换矩阵(2x3)函数 estimateAffinePartial2D()的使用
  • StarRocks 生产部署一套集群,存储空间如何规划?
  • JVM执行引擎JIT深度剖析
  • 【DOCKER】基于DOCKER的服务之DUFS
  • 加密货币地址的基本概念
  • 如何在 Linux 服务器上部署 Pydio Cells 教程
  • Halcon例程代码解读:安全环检测(附源码|图像下载链接)
  • Selenium 全面指南
  • #error: WinSock.h has already been included解决方案
  • 2.Couchbase 的增量查询优化
  • 汽车IVI中控开发入门及进阶(46):FFmpeg
  • Spring Boot 中的 @Scheduled 定时任务以及开关控制
  • 服务器证书原理
  • 重温设计模式--代理、中介者、适配器模式的异同
  • 2024第十六届蓝桥杯模拟赛(第二期)-Python
  • 分布式系统中的防抖策略一致性与性能优化
  • 项目代码第6讲:UpdownController.cs;理解 工艺/工序 流程、机台信息;前端的“历史 警报/工艺 记录”
  • 【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解
  • 大模型应用技术系列(一):大模型应用整体技术栈浅析
  • 绿色环保木塑复合材料自动化生产线设计书
  • Sourcegraph 概述
  • c 保存 csv格式的文件
  • C语言扫雷游戏教学(有图形界面)(提供源码+实验报告)(计时+排行榜+难度选择+登录注册+背景音乐)(涉及easyX库)
  • 第五节:GLM-4v-9b模型model加载源码解读(模型相关参数方法解读)
  • 面试经验分享 | 北京渗透测试岗位