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

【IntelliJ IDEA】如何在pom.xml中去除maven中未使用的依赖

pom.xml中去除maven中未使用的依赖

  • 主要解决的问题
    • 一、怎么做?
    • 二、重点依赖类型解析说明
    • 三、什么时候做?
    • 四、有什么风险要注意的?
    • 五、补充一个快捷方法使用
    • 六、IDEA的terminal中如何才能使用命令mvn呢?

主要解决的问题

你的项目中pom.xml文件是不是也引了一堆jar依赖,如何对这些jar包进行清理呢?一起行动起来吧~~~~

一、怎么做?

对于Maven项目,处理起来相对简单。Maven自身提供了一款强大的依赖分析工具,只需简单的命令输入即可轻松实现。在IntelliJ IDEA中,你可以切换到Terminal(终端)窗口,或者在命令行中导航至项目根目录,执行以下命令:

mvn dependency:analyze

随后,仔细查看控制台输出的日志信息,特别关注以下几个部分:

[WARNING] Used undeclared dependencies found:
[WARNING]    org.springframework:spring-webmvc:jar:5.3.31:compile
[WARNING]    org.springframework:spring-beans:jar:5.3.31:compile
[WARNING]    com.baomidou:mybatis-plus-core:jar:3.5.5:compile
[WARNING]    com.mxpt:mxpt-api-system:jar:1.0.0:compile
[WARNING]    org.springframework:spring-context:jar:5.3.31:compile
[WARNING]    org.springframework:spring-core:jar:5.3.31:compile
[WARNING]    org.springframework.boot:spring-boot:jar:2.7.18:compile
[WARNING]    org.springframework:spring-expression:jar:5.3.31:compile
[WARNING]    org.springframework:spring-tx:jar:5.3.31:compile
[WARNING]    org.slf4j:slf4j-api:jar:1.7.36:compile
[WARNING]    com.alibaba:fastjson:jar:1.2.83_noneautotype:compile
[WARNING]    com.mxpt:mxpt-common-core:jar:1.0.0:compile
[WARNING]    org.mybatis:mybatis-spring:jar:2.1.2:compile
[WARNING]    org.apache.commons:commons-lang3:jar:3.12.0:compile
[WARNING]    io.swagger:swagger-annotations:jar:1.6.2:compile
[WARNING]    org.springframework:spring-web:jar:5.3.31:compile
[WARNING]    com.baomidou:mybatis-plus-annotation:jar:3.5.5:compile
[WARNING]    org.springframework.boot:spring-boot-autoconfigure:jar:2.7.18:compile
[WARNING]    com.baomidou:mybatis-plus-extension:jar:3.5.5:compile
[WARNING]    com.mxpt:mxpt-common-security:jar:1.0.0:compile
[WARNING]    commons-io:commons-io:jar:2.13.0:compile
[WARNING]    jakarta.validation:jakarta.validation-api:jar:2.0.2:compile
[WARNING]    org.apache.commons:commons-csv:jar:1.8:compile
[WARNING]    org.springframework.cloud:spring-cloud-context:jar:3.1.7:compile
[WARNING]    org.mybatis:mybatis:jar:3.5.15:compile
[WARNING]    com.fasterxml.jackson.core:jackson-annotations:jar:2.13.5:compile
[WARNING]    org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.83:compile
[WARNING] Unused declared dependencies found:
[WARNING]    com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:jar:2021.0.5.0:compile
[WARNING]    com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:jar:2021.0.5.0:compile
[WARNING]    com.alibaba.cloud:spring-cloud-starter-alibaba-sentinel:jar:2021.0.5.0:compile
[WARNING]    de.codecentric:spring-boot-admin-starter-client:jar:2.7.11:compile
[WARNING]    com.baomidou:mybatis-plus-boot-starter:jar:3.5.5:compile
[WARNING]    org.springframework.boot:spring-boot-starter-actuator:jar:2.7.18:compile
[WARNING]    io.springfox:springfox-swagger-ui:jar:3.0.0:compile
[WARNING]    org.postgresql:postgresql:jar:42.7.2:compile
[WARNING]    com.mxpt:mxpt-common-datasource:jar:1.0.0:compile
[WARNING]    com.mxpt:mxpt-common-datascope:jar:1.0.0:compile
[WARNING]    org.projectlombok:lombok:jar:1.18.30:provided
[WARNING]    net.sourceforge.javacsv:javacsv:jar:2.0:compile
[WARNING]    cn.hutool:hutool-all:jar:5.8.0:compile
[WARNING]    org.springframework.boot:spring-boot-starter-thymeleaf:jar:2.7.17:compile
[WARNING]    org.springframework.cloud:spring-cloud-starter-bootstrap:jar:3.1.7:compile

二、重点依赖类型解析说明

共分为两种:
一、[WARNING] Used undeclared dependencies found:

Used undeclared dependencies found这一部分指的是项目中实际使用了某个依赖包,但并未在pom.xml文件中显式声明。这些依赖包可能是通过其他依赖间接引入的。例如,假设你的项目在pom.xml中声明了对A.jar的依赖,但未声明对B.jar的依赖。而A.jar的依赖树中又包含了对B.jar的依赖。通过运行mvn dependency:analyze命令,如果输出如下警告:

mvn dependency:analyze
出现[WARNING] Used undeclared dependencies found: B.jar

这意味着你的项目代码中实际上使用了B.jar中的类或接口。在这种情况下,你应该将B.jar添加到项目的pom.xml文件中,以确保依赖关系的正确声明。

二、[WARNING] Unused declared dependencies found:

Unused declared dependencies found这一部分则是指你在项目的pom.xml文件中声明了某个依赖包,但在实际的项目代码中并未使用到它。这些依赖包可能是不必要的,可以考虑从pom.xml中移除。

然而,在删除这些依赖之前,请务必注意以下几点:“未使用”的定义仅限于main/java和test源代码目录,不包括配置文件或其他可能的扩展点。
在删除依赖之前,务必备份pom.xml文件,以防万一误删重要依赖导致的问题。
Maven的依赖分析工具并非万能,有时可能会产生误报。因此,在删除任何依赖后,都应进行充分的测试以验证项目的稳定性。

三、什么时候做?

新项目初始化时: 在创建新项目并添加依赖时,务必谨慎选择所需的jar包,避免盲目复制旧项目的依赖配置,从而减少后续不必要的清理工作。
功能代码重构时: 在进行功能代码的重构过程中,可以顺便进行一次依赖项的审查与清理。由于后续还有自测和提测等环节,即使有误删的情况也能及时发现并修复。

四、有什么风险要注意的?

依赖分析工具的结果并非绝对准确,可能存在误判的情况。
例如,某些工具可能无法识别某些特殊的使用场景(如注解处理器等)。因此,在删除依赖后,请务必进行全面的测试以验证项目的正确性。

五、补充一个快捷方法使用

IntelliJ IDEA 自带的 maven 工具使用方法打开IntelliJ IDEA

-》导航至项目的pom.xml文件所在目录
-》右键点击pom.xml文件
-》选择“Maven”菜单中的“Analyze Dependencies”选项
-》IntelliJ IDEA将自动分析项目的依赖关系,并在弹出的窗口中展示分析结果。

你可以根据分析结果进行相应的操作,如添加缺失的依赖或删除未使用的依赖等。通过以上步骤,你可以在IntelliJ IDEA中轻松管理项目的依赖关系,确保项目的稳定性和可维护性。

六、IDEA的terminal中如何才能使用命令mvn呢?

一、安装apache-maven-3.5.3,我使用的是免安装版的,直接解压缩就可以使用。

首先,记录一下我们maven包所在的路径信息,我使用的包的路径信息为:

D:/setup/apache-maven-3.5.3

在这里插入图片描述
二、配置环境变量。

1. 打开环境变量配置。右键计算机→属性→高级系统设置→高级→环境变量,在系统变量中配置。
2. 配置MAVEN_HOME。在系统变量中新建,变量名MAVEN_HOME,变量值,maven文件夹路径,我的路径是D:/setup/apache-maven-3.5.3,最好不要有中文,保存。
3. 配置path,找到path系统变量,点开,新建,输入%MAVEN_HOME%\bin

在这里插入图片描述

在这里插入图片描述
4、验证是否安装完成,运行cmd,输入mvn -v,显示maven版本则成功。

在这里插入图片描述

参考链接:https://blog.csdn.net/qq_33193972/article/details/147430411

http://www.xdnf.cn/news/1292941.html

相关文章:

  • 存量竞争下的破局之道:品牌与IP的双引擎策略|创客匠人
  • LeetCode 分类刷题:1004. 最大连续1的个数 III
  • PHP imagick扩展安装以及应用
  • 机器学习-Cluster
  • Java项目中地图功能如何创建
  • 机器学习阶段性总结:对深度学习本质的回顾 20250813
  • csp知识基础——贪心算法
  • 类和对象(中下)
  • 图像分类-动手学计算机视觉10
  • JDK17下载与安装图文教程(保姆级教程)
  • 基于DDPG的车辆纵向速度控制优化:兼顾速度与乘坐舒适性
  • 《Python学习之基础语法1:从零开始的编程之旅》
  • k8s资源管理
  • GPT-o3回归Plus用户,GPT5拆分三种模式,对标Grok
  • 什么是HTTP的无状态(举例详解)
  • 【C++详解】用红黑树封装模拟实现mymap、myset
  • 【C++】哈希的应用:位图和布隆过滤器
  • Query通过自注意力机制更新(如Transformer解码器的自回归生成)的理解
  • 【Java web】HTTP 与 Web 基础教程
  • 最新去水印小程序系统 前端+后端全套源码 多套模版 免授权
  • 弹性扩展新范式:分布式LLM计算的FastMCP解决方案
  • 可视化调试LangChain SQLChatMessageHistory:SQLite数据库查看全攻略
  • 6 ABP 框架中的事件总线与分布式事件
  • 服务器安全检测与防御技术总结
  • 比特币与区块链:去中心化的技术革命
  • Java毕业设计选题推荐 |基于SpringBoot的水产养殖管理系统 智能水产养殖监测系统 水产养殖小程序
  • TensorFlow实现回归分析详解
  • 把 Linux 装进“小盒子”——边缘计算场景下的 Linux 裁剪、启动与远程运维全景指南
  • 各种排序算法(二)
  • 升级Gradle版本后,安卓点击事件使用了SwitchCase的情况下,报错无法使用的解决方案