Maven运行时分析多余依赖问题

下载 loosejar 库

++https://github.com/kyrill007/loosejar/releases++ 官方文档

以 IntelliJ IDEA 开发工具为例

  1. 使用IDE 打开项目工程

  2. Edit Configurations ...

如图:

增加 javaagent 配置

如图:

-javaagent:${保存路径}/loosejar-1.1.0.jar

运行SpringBoot Application main 方法

可以在控制台打印日志:

复制代码

[loosejar]: loosejar analysis is registered to run on JVM shutdown. [loosejar]: Registering loosejar as a JMX service... [loosejar]: Registered loosejar as a JMX service: [com.googlecode.loosejar:type=LooseJarMBean]

如图:

使用JAVA jconsole 来分析

1、cd $JAVA_HOME/bin/

2、open jconsole

3、选择监控进程,点击连接

如图:

选择不安全的连接

如图:

等待服务启动完成

依次点击下图: 1 --> 2 --> 3

MBean -> com.googlecode.loosejar:LooseJarMBean:操作:summary -> 点击summary

获取运行时分析结果如图:

弹出分析结果如图:

拷贝返回值内容到本地文本文件

搜索关键字: Utilization: 0.00%

例如找到如下内容

复制代码
Jar: /Users/kevin/.m2/repository/org/springframework/boot/spring-boot-starter-data-redis/2.0.8.RELEASE/spring-boot-starter-data-redis-2.0.8.RELEASE.jar
Utilization: 0.00% - loaded 0 of 0 classes.

根据 pom 中配置依赖和文本文件中查询使用率

Utilization/使用率:当使用率为0.00%则**"或许可以"**将该依赖去掉。

分析实现原理:

基于运行时执行逻辑实现,运行时未执行到的代码将会被统计出未使用的情况。

备注:由于该特性是基于代码运行值的情况进行分析,相比启动编译时分析可以或得更精准的结果,但需要注意的时,它的分析是基于你的代码运行过的程序来确定下来的,所以如果代码中某个依赖库代码在运行时没有被执行到,可能会导致分析使用率为零的情况。

相关推荐
草莓熊Lotso2 小时前
MySQL 内置函数指南:日期、字符串、数学函数实战
android·java·linux·运维·数据库·c++·mysql
计算机学姐2 小时前
基于SpringBoot的蛋糕烘焙销售服务系统
java·spring boot·后端·spring·tomcat·intellij-idea·mybatis
hongtianzai2 小时前
Go vs Java:终极性能对决
java·开发语言·golang
程序员老乔2 小时前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(四):结构化并发 & 作用域值,订单聚合查询的新写法
java·数据库·spring boot
代码探秘者2 小时前
【算法篇】2.滑动窗口
java·数据结构·后端·python·算法·spring
yusheng_xyb2 小时前
互联网大厂Java求职面试实录
java·面试·互联网·技术面试
百锦再2 小时前
Spring Boot + JWT + RBAC 权限系统实战,从登录鉴权到接口级权限控制完整落地
java·数据库·spring boot·后端·sql·mysql·oracle
smxgn2 小时前
FrankenPHP实践
java
小江的记录本2 小时前
【Filter / Interceptor】过滤器(Filter)与拦截器(Interceptor)全方位对比解析(附底层原理 + 核心对比表)
java·前端·后端·spring·java-ee·前端框架·web
weisian1512 小时前
Java并发编程--16-ConcurrentHashMap演进:从分段锁到CAS+synchronized
java·hashmap·分段锁·cas+同步·longaddr思想