Maven之分析剔除无用的jar引用问题

 更新时间:2023年09月07日 10:43:14   作者:凝雨-Yun  
这篇文章主要介绍了Maven之分析剔除无用的jar引用问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Maven分析剔除无用的jar引用

当项目开发维护了一段时间时,经常会有项目打包速度慢,jar依赖多,依赖关系错综复杂,这种问题是项目维护最常见的问题,由于开发人员在bugfix或者feature开发时往往只是往项目中添加jar依赖,那我们如何分析出项目中哪些依赖是用到的,哪些依赖是不用的?

使用Maven analyze来进行分析

使用如下命令:

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 found Unused declared dependencies found

Used undeclared dependencies found

这个是指某些依赖的包在代码中有用到它的代码,但是它并不是直接的依赖(就是说没有在pom中直接声明),是通过引入传递下来的包。

举个例子:

project pom 中声明了 A.ja r的依赖(没有声明 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

这个是指我们在pom中声明了依赖,但是在实际代码中并没有用到这个包!也就是多余的包。

这个时候我们就可以把这个依赖从pom中剔除。

但是这里我们需要注意:

这里说的实际代码没有用到,指的是在main/java和test里没有用的,但是并不是意味着真的没有用到这些包

有可能配置文件中引用或者其他扩展点自动加载这些包,所以我们在删除依赖的时候一定要小心,做好备份,因为这类引用maven是分析不出来的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringMVC解析post请求参数详解

    SpringMVC解析post请求参数详解

    今天小编就为大家分享一篇解决SpringMVC接收不到ajaxPOST参数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-08-08
  • SpringCloud_Sleuth分布式链路请求跟踪的示例代码

    SpringCloud_Sleuth分布式链路请求跟踪的示例代码

    Spring Cloud Sleuth是一款针对Spring Cloud的分布式跟踪工具,本文通过实例代码介绍了SpringCloud_Sleuth分布式链路请求跟踪,感兴趣的朋友跟随小编一起看看吧
    2023-02-02
  • SSM框架下实现登录注册的示例代码

    SSM框架下实现登录注册的示例代码

    这篇文章主要介绍了SSM框架下实现登录注册的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 关于SpringBoot静态资源路径管理问题

    关于SpringBoot静态资源路径管理问题

    这篇文章主要介绍了SpringBoot静态资源路径管理,主要包括默认静态资源路径,增加静态资源路径前缀的相关操作,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • 解决在SpringBoot中使用@Value取不到值的问题

    解决在SpringBoot中使用@Value取不到值的问题

    这篇文章主要给大家分享解决在SpringBoot中使用@Value取不到值的问题,文中有详细的解决代码供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • Java Swing程序设计实战

    Java Swing程序设计实战

    今天教大家怎么用JavaSwing工具包实现一个程序的界面设计,文中有非常详细的代码示例及注释,对正在学习Java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • JDK 1.8 安装配置教程(win7 64bit )

    JDK 1.8 安装配置教程(win7 64bit )

    这篇文章主要为大家详细介绍了win7 64bit下JDK 1.8 安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Java编程实现验证哥德巴赫猜想

    Java编程实现验证哥德巴赫猜想

    这篇文章主要介绍了Java编程实现验证哥德巴赫猜想,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • Springboot整合Shiro实现登录与权限校验详细解读

    Springboot整合Shiro实现登录与权限校验详细解读

    本文给大家介绍Springboot整合Shiro的基本使用,Apache Shiro是Java的一个安全框架,Shiro本身无法知道所持有令牌的用户是否合法,我们将整合Shiro实现登录与权限的验证
    2022-04-04
  • java使用ant.jar解压缩文件的示例代码

    java使用ant.jar解压缩文件的示例代码

    这篇文章主要介绍了java使用ant.jar解压缩文件,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09

最新评论