背景
Maven 是非常优秀的项目管理工具,我们可以方便地在 pom 文件里配置 Java 工程的依赖。但是随着项目的迭代和时间推移,pom 文件在新老需求的不断增删改之下变得越来越臃肿,到后来连自己都不知道哪些是有效依赖。
下面将简单介绍如何用 Maven 插件 maven dependency plugin 来解决这个问题。
maven dependency plugin
maven dependency plugin
是一个强大的 Maven 依赖处理插件,官网介绍如下:
The dependency plugin provides the capability to manipulate artifacts. It can copy and/or unpack artifacts from local or remote repositories to a specified location.
该插件可以将文件从本地或远程仓库复制 / 解压到指定的位置,相应的,我们比较熟知的 goal 可能是 dependency:copy 和 dependency:unpack。但除此之外,maven dependency plugin 还提供了插件依赖分析的能力,与此对应的 goal 是 dependency:analyze,这也是本文要介绍的重点。
dependency:analyze 使用
此命令会扫描项目的依赖关系,并分析出哪些依赖是:
- 被引用但未声明 (used and undeclared):比如在工程中使用了某个类,但这个类的 Maven 依赖并没有配置在 pom 文件中。
- 声明了但未被引用 (unused and declared):在 pom 文件中声明了某个依赖,但是该依赖却没有在工程中被使用。
假设我们新建一个 example 项目,同时添加 jackson-databind
和 log4j
的依赖,并配置 maven-dependency-plugin
:
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version