如何使用Maven清理Java项目中没有被使用的jar包依赖?

createh54周前 (02-18)技术教程28

很多人都遇到过这种情况,在自己的Maven项目中有很多没有被使用的Jar包文件,导致最终打包完成的可执行的Jar包很大,那么有没有有一种方式来将这些没有用的Jar包进行清理之后,来减少最终Jar包的大小。

使用Maven进行清理

要使用Maven清理Java项目中没有被使用的jar包依赖,我们可以使用maven-dependency-plugin插件提供的analyze来实现。这个插件能够分析项目中的依赖关系,找出未被使用的依赖。然后我们可以根据相关的提示来进行自动清理或是通过手动的方式进行清理。

配置插件

在项目的pom.xml文件中添加maven-dependency-plugin插件配置,如下所示。


    ...
    
        
            
                org.apache.maven.plugins
                maven-dependency-plugin
                3.1.2 
                
                    
                        
                            analyze
                        
                    
                
            
        
    
    ...

运行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工具。但是在一般情况下我们在自动化检查完成斥候,都建议手动检查和移除未被使用的依赖更为安全和可靠。

相关文章

Java项目构建工具Gradle是否可以完全替代Maven?

大家好,我是阿迈达,有趣的互联网软件工程师。专业角度分析技术原理,幽默的态度解读科技互联网资讯。欢迎进圈交流(此处已添加圈子卡片,请到今日头条客户端查看)前言在Java项目的开发中,需要引入自动化构建...

你还不知道java程序maven打包后如何查看jar的编译版本,过来看看

有时候我们需要知道一个jar是 编译是依赖JAVA 哪个版本的需求。如:我们知道该程sjjcb-dev-lyq-example-jdk11.jar 编译JDK 是 11,但是具体生产的类是11还是其他...

Gradle 使用maven本地仓库 带来的思考

本篇主要探究一下 在使用Gradle 的时候一般会配置 maven 的本地仓库的,那是不是Gradle 可以直接使用 maven本地仓库的jar呢 ? 下面来探究一下思考当我们在使用Gradle的时候...

推荐 10 个Java 项目必备 Maven 插件

介绍Maven 是 Java 开发人员必不可少的构建和项目管理工具。它通过利用简单的项目对象模型 (POM) 自动执行构建、测试和部署 Java 应用程序的过程。Maven 插件扩展了该工具的功能,使...

把自己的java库发布到maven公共仓库,像其他普通jar一样使用它

欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos关于maven中央仓库作为一个java程序员,对maven...