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

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.kler.cn/a/449692.html

相关文章:

  • 链表的详解
  • 怎么设置电脑密码?Windows和Mac设置密码的方法
  • web三、 window对象,延时器,定时器,时间戳,location对象(地址),本地存储-localStorage,数组去重new Set
  • 如何评估一个股票API接口
  • 环网冗余CAN转光纤 CAN光端机在风电项目应用
  • 运维工程师面试系统监控与优化自动化与脚本云计算的理解虚拟化技术的优点和缺点
  • 坑人 C# MySql.Data SDK
  • 蓝牙的世界:HarmonyOS Next中的蓝牙接入和连接
  • 【py脚本+logstash+es实现自动化检测工具】
  • 多模态去噪信息收集
  • 本机如何连接虚拟机MYSQL
  • 深入了解 Kubernetes Pod 的状态
  • StarRocks 生产部署一套集群,存储空间如何规划?
  • 【MySQL初阶】--- 库和表的操作
  • (2024.12)Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败>记录
  • gitlab克隆仓库报错fatal: unable to access ‘仓库地址xxxxxxxx‘
  • 【国产NI替代】基于国产FPGA+兆易创新GD32F450的全国产16振动+2转速(24bits)高精度终端采集板卡
  • DeepFaceLab技术浅析(五):面部替换
  • Git(9)之创建新空白分支
  • 【爬虫开发】爬虫开发从0到1全知识教程第11篇:Mongodb数据库,介绍【附代码文档】
  • 力扣第114题:二叉树展开为链表
  • 使用MATLAB判断矩阵是否正定的方法与例程
  • Spring Boot注解总结大全【案例详解,一眼秒懂】
  • Linux网络——网络基础
  • 基于Spring Boot的图书管理系统
  • C语言基础——指针(4)