【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.pswp.cn/news/919216.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓9.0系统修改定制化____关于自启脚本的规律、编写与实战示例 推荐收藏【二】

在定制化ROM服务中,许多功能都需要通过自启脚本来实现。上期博文详细解析了脚本编写的规律、权限设置以及常见错误踩坑的排查与修复方法,并逐行解释了脚本代码的含义。掌握这些基础知识后,这期再以实例演示的过程来使我们使用更得心应手。。 通过博文了解💝💝💝 1�…

选择gpt-5还是claude-4-sonnect

了解我的朋友都知道,我是一个伪全栈工程师,一个人加AI编程工具打天下。 最近,gpt-5已经出来有一段时间了,cursor第一时间就支持了gpt-5模型,我第一时间就尝试了gpt-5效果。说实话,gpt-5和claude-4-sonnect都…

自动化运维实验(二)---自动识别设备,并导出配置

目录 一、实验拓扑 二、实验目的 三、实验步骤 实验思路: 代码部分: 四、实验结果: 一、实验拓扑 二、实验目的 ssh远程登录后,识别设备类型(华三、华为、锐捷、山石、飞塔、深信服等),再…

Matlab(4)初阶绘图

一、Basic plotting1.plot()plot(x,y) :x图片中点的横坐标,y图片中点的纵坐标plot(y) :y图片中点的纵坐标,x图片中点的横坐标默认为1,2,3,4,5........plot(co…

服务器硬件电路设计之 I2C 问答(五):I2C 总线数据传输方向如何确定、信号线上的串联电阻有什么作用?

在服务器硬件电路设计中,I2C 总线作为常用的串行通信总线,其数据传输方向的确定和信号线上串联电阻的作用是关键知识点。​I2C 总线数据传输方向由主设备和从设备的角色以及读写位共同确定。主设备是发起通信的一方,从设备则是被寻址的对象。…

OpenBMC中C++策略模式架构、原理与应用

1. 策略模式概述 策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时动态选择算法或行为,而无需修改客户端代码。 核心思想:封装可互换的算法族,使它们可以独立于使用它们的客户端变化。 1.…

【python实用小脚本-187】Python一键批量改PDF文字:拖进来秒出新文件——再也不用Acrobat来回导

Python一键批量改PDF文字:拖进来秒出新文件——再也不用Acrobat来回导 PDF文字替换, 批量导出, 零依赖转档, 一键完成, 瑞士军刀 故事开场:一把瑞士军刀救了周五下班的你 周五 18:00,老板甩来 50 份合同 PDF: “把里面的‘2023’全…

汽车后雾灯色度难达标?OAS 软件精准解决破瓶颈

汽车后雾灯案例分析简介汽车后雾灯是车辆在能见度较低的雾、雨、雪等恶劣天气条件下行驶时,向后方车辆传递警示信号的重要装置,其性能直接关系到车辆的后方安全。根据规定,红色信号灯需符合 CIE1931 标准,其色度坐标 X 值应在 0.6…

[系统架构设计师]架构设计专业知识(二)

[系统架构设计师]架构设计专业知识(二) 一.信息系统基础知识 1.信息系统概述 信息系统功能:输入,存储,处理,输出,控制 理查德.诺兰: 初始,传播,控制&#xff…

如果用ApiFox调用Kubernetes API,需要怎么设置证书?

针对Docker Desktop中Kubernetes访问报SSL/TLS信任关系错误的问题,以下是综合解决方案:要在Postman中调用Kubernetes API并设置证书,需按以下步骤操作:🔐 证书设置步骤‌提取证书文件‌从kubeconfig文件(~/…

nodejs 路由/请求

//导入模块 const express require(express); //创建应用 const app express();//设置路由 app.get(/,(req,resp)>{//输出响应console.log(request coming.............);resp.json(req.headers); });app.get(/user/:id, (req, res) > {const userId req.params.id; …

Python 数据可视化:柱状图/热力图绘制实例解析

Python 数据可视化:柱状图绘制实例解析 一、引言 数据可视化是数据分析中至关重要的环节,它能将复杂的数据以直观的图形方式呈现,帮助我们更好地理解数据特征和规律。Python 拥有丰富的可视化库,其中 Matplotlib 是最常用的基础库…

API生命周期10阶段

一、策略规划(Strategy Planning) 核心任务:业务价值对齐、技术路线设计关键产出: API产品蓝图:定义业务领域边界(如支付API域、用户API域)治理规范:《API安全标准》《版本管理策略》…

UGUI源码剖析(9):布局的实现——LayoutGroup的算法与实践

UGUI源码剖析(第九章):布局的实现——LayoutGroup的算法与实践 在前一章中,我们剖析了LayoutRebuilder是如何调度布局重建的。现在,我们将深入到布局核心,去看看那些具体的组件——LayoutGroup系列组件是如…

GitHub PR 提交流程

step1 在 GitHub 上 fork 目标仓库&#xff08;手动操作&#xff09; step2 将 fork 的目标仓库克隆到本地 git clone https://github.com/<your-username>/<repo-name>.git cd <repo-name>step3 与上游目标仓库建立链接 git remote add upstream https://gi…

矿物分类案列 (一)六种方法对数据的填充

目录 矿物数据项目介绍&#xff1a; 数据问题与处理方案&#xff1a; 数据填充策略讨论&#xff1a; 模型选择与任务类型&#xff1a; 模型训练计划&#xff1a; 一.数据集填充 1.读取数据 2.把标签转化为数值 3.把异常数据转化为nan 4.数据Z标准化 5.划分训练集测试…

vue:vue3的方法torefs和方法toref

在 Vue 3 的 Composition API 中,toRef 和 toRefs 是两个用于处理响应式数据的重要工具,它们专门用于从 reactive() 对象中提取属性并保持响应性。 toRef() 作用:将 reactive 对象的单个属性转换为一个 ref 对象,保持与源属性的响应式连接。 使用场景: 需要单独提取 rea…

Android 移动端 UI 设计:前端常用设计原则总结

在 Android 移动端开发中&#xff0c;优秀的 UI 设计不仅需要视觉上的美观&#xff0c;更需要符合用户习惯、提升操作效率的设计逻辑。前端 UI 设计原则是指导开发者将功能需求转化为优质用户体验的核心准则&#xff0c;这些原则贯穿于布局结构、交互反馈、视觉呈现等各个环节。…

计算机网络 TCP三次握手、四次挥手超详细流程【报文交换、状态变化】

TCP&#xff08;传输控制协议&#xff09;是互联网最重要的协议之一&#xff0c;它保证了数据的可靠、有序传输。连接建立时的“三次握手”和连接关闭时的“四次挥手”是其核心机制&#xff0c;涉及特定的报文交换和状态变化。 一、TCP 三次握手&#xff08;Three-Way Handshak…

使用Applications Manager进行 Apache Solr 监控

Apache Solr 为一些对性能极为敏感的环境提供搜索支持&#xff1a;电子商务、企业应用、内容门户和内部知识系统。因此&#xff0c;当出现延迟增加或结果不一致的情况时&#xff0c;用户会立刻察觉。而当这些问题未被发现时&#xff0c;情况会迅速恶化。 Apache Solr 基于 Apa…