网站首页 > java教程 正文
很多人都遇到过这种情况,在自己的Maven项目中有很多没有被使用的Jar包文件,导致最终打包完成的可执行的Jar包很大,那么有没有有一种方式来将这些没有用的Jar包进行清理之后,来减少最终Jar包的大小。
使用Maven进行清理
要使用Maven清理Java项目中没有被使用的jar包依赖,我们可以使用maven-dependency-plugin插件提供的analyze来实现。这个插件能够分析项目中的依赖关系,找出未被使用的依赖。然后我们可以根据相关的提示来进行自动清理或是通过手动的方式进行清理。
配置插件
在项目的pom.xml文件中添加maven-dependency-plugin插件配置,如下所示。
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.2</version> <!-- 版本号可以选择最新的稳定版 -->
<executions>
<execution>
<goals>
<goal>analyze</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
运行Maven分析命令
接下来,我们需要在项目的根目录下运行如下的命令。
mvn dependency:analyze
这个命令就会分析项目中的依赖关系,然后又将未被使用的依赖和需要但未声明的依赖,进行输出。
检查输出结果
输出类似如下所示,我们需要从中检查命令输出结果,找出未被使用的依赖。
[INFO] --- maven-dependency-plugin:3.1.2:analyze (default-cli) @ your-project ---
[WARNING] Used undeclared dependencies found:
[WARNING] commons-collections:commons-collections:jar:3.2:compile
[WARNING] Unused declared dependencies found:
[WARNING] junit:junit:jar:4.12:test
例如,在上面的输出中表明 commons-collections 依赖被使用但未在 pom.xml 中声明,而 junit 依赖已声明但未被使用。接下来我们就需要根据输出结果,移除 pom.xml 文件中未被使用的依赖。
然后再次运行项目,并且检查项目是否可以正常运行。
当然在实际使用场景中,如果需要自动化清理未使用的依赖,我们可以考虑使用maven-cleanup-plugin工具。但是在一般情况下我们在自动化检查完成斥候,都建议手动检查和移除未被使用的依赖更为安全和可靠。
猜你喜欢
- 2025-06-15 Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 2025-06-15 推荐一款超棒的SpringCloud 脚手架项目
- 2025-06-15 IDEA将项目打包成jar包(idea打包普通java项目)
- 2025-06-15 Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 2025-06-15 记录Dockerfile将jar包构建成部署所需的镜像
- 2025-06-15 项目基础部署汇总八---linux下xxl-job安装
- 2025-06-15 Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 2025-06-15 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 2025-06-15 如何将本地JAR文件添加到Maven项目中
- 2025-06-15 Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
你 发表评论:
欢迎- 06-15Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 06-15推荐一款超棒的SpringCloud 脚手架项目
- 06-15IDEA将项目打包成jar包(idea打包普通java项目)
- 06-15Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 06-15记录Dockerfile将jar包构建成部署所需的镜像
- 06-15项目基础部署汇总八---linux下xxl-job安装
- 06-15Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 06-15终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 最近发表
-
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 推荐一款超棒的SpringCloud 脚手架项目
- IDEA将项目打包成jar包(idea打包普通java项目)
- Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 记录Dockerfile将jar包构建成部署所需的镜像
- 项目基础部署汇总八---linux下xxl-job安装
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 如何将本地JAR文件添加到Maven项目中
- Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)