springBoot Maven 剔除无用的jar引用问题记录

 更新时间:2024年12月23日 09:34:08   作者:水w  
这篇文章主要介绍了springBoot Maven 剔除无用的jar引用问题记录,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

当项目经过一段时间的开发和维护后,经常会遇到项目打包速度变慢的问题。这通常与项目中包含大量的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包时要慎重,不要一股脑儿直接拷贝老项目的依赖,避免后期又花时间来剔除。

到此这篇关于springBoot Maven 剔除无用的jar引用的文章就介绍到这了,更多相关springBoot Maven jar引用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文浅析Java金额计算用long还是BigDecimal

    一文浅析Java金额计算用long还是BigDecimal

    在Java后端开发中处理与钱有关的业务时,确保金额计算的准确性和避免错误非常重要,这篇文章主要给大家介绍了关于Java中处理金额计算之使用Long还是BigDecimal的相关资料,希望对大家有所帮助
    2025-12-12
  • Mybatis报错mapkey is required问题及解决

    Mybatis报错mapkey is required问题及解决

    这篇文章主要介绍了Mybatis报错mapkey is required问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Java读取JSON文件并将其中元素转为JSON对象输出的方式

    Java读取JSON文件并将其中元素转为JSON对象输出的方式

    这篇文章主要介绍了Java读取JSON文件并将其中元素转为JSON对象输出的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-10-10
  • Java中占位符的超全使用方法分享

    Java中占位符的超全使用方法分享

    这篇文章主要为大家详细介绍了Java中常见的一些占位符的使用方法,例如%d,%s等,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习学习
    2023-05-05
  • Java多线程synchronized同步方法详解

    Java多线程synchronized同步方法详解

    这篇文章主要介绍了Java多线程synchronized同步方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java实现后端和前端的接口数据加密方案详解

    Java实现后端和前端的接口数据加密方案详解

    这篇文章主要为大家详细介绍了一种基于椭圆曲线集成加密方案(ECIES)的前后端数据安全交互方法,该方案通过椭圆曲线密码学实现密钥协商,结合AES对称加密保障数据传输安全,感兴趣的小伙伴可以了解下
    2026-04-04
  • Java设计模式之策略模式示例详解

    Java设计模式之策略模式示例详解

    策略模式属于Java 23种设计模式中行为模式之一,该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。本文将通过示例详细讲解这一模式,需要的可以参考一下
    2022-03-03
  • Java8之Lambda表达式使用解读

    Java8之Lambda表达式使用解读

    这篇文章主要介绍了Java8之Lambda表达式使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • SpringBoot 将配置文件挂到 jar 包外面的操作方法

    SpringBoot 将配置文件挂到 jar 包外面的操作方法

    在 SpringBoot 中,可以将配置文件放在 jar 包外面,这样可以方便地修改配置而不需要重新打包和部署,这篇文章主要介绍了SpringBoot 如何将配置文件挂到 jar 包外面,需要的朋友可以参考下
    2023-03-03
  • Spring Boot场景启动器(Starters)从入门到精通

    Spring Boot场景启动器(Starters)从入门到精通

    本文给大家介绍Spring Boot场景启动器(Starters)完全指南:从入门到精通,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-10-10

最新评论