1.概述

使用Maven管理项目依赖项时,我们可能无法跟踪应用程序中使用了哪些依赖项。

在本文中,我们将介绍如何使用Maven依赖插件,该插件可帮助我们在项目中查找未使用的依赖。

2. 项目设置

让我们从添加几个依赖项开始,分别是slf4j-api(将要使用的)和common-collections(将不使用的):

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.0-alpha1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.4</version>
        </dependency>
    </dependencies>

即使不在在pom中指定它。我们也可以访问Maven依赖插件,但是,如果需要指定版本以及一些属性时,我们可指定它:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.2</version>
            </plugin>
        </plugins>
    </build>

3. 示例代码

现在我们已经建立了项目,让我们编写一行代码,在其中使用我们之前定义的依赖项:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class UnusedDependenciesExample {
    public Logger getLogger() {
        return LoggerFactory.getLogger(UnusedDependenciesExample.class);

    }
}

LoggerFactoryLogger是SLF4J库的类。

4.查找未使用的依赖项

使用Maven依赖插件,我们可以找到项目中未使用的依赖。

为此,我们调用依赖插件的分析目标:

$ mvn dependency:analyze

输出如下:

[INFO] --- maven-dependency-plugin:3.1.2:analyze (default-cli) @ find-unused ---
[WARNING] Unused declared dependencies found:
[WARNING]    org.apache.commons:commons-collections4:jar:4.4:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.854 s
[INFO] Finished at: 2020-05-31T17:39:28+09:00
[INFO] ------------------------------------------------------------------------

对于我们项目中未使用的依赖项,Maven都会在分析报告中发出警告。

5.指定使用的依赖

根据项目的性质,有时我们可能需要在运行时加载类,比如在面向插件的项目中。

由于在编译时未使用依赖项,因此maven-dependency-plugin会发出警告,指出实际上并未使用依赖项。

我们可以强制执行并指示插件正在使用的库。

为此,我们开始使用usedDependencies属性列出使用的依赖:

<plugin>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.1.2</version>
  <configuration>
    <usedDependencies>
      <dependency>org.apache.commons:commons-collections4</dependency>
    </usedDependencies>
  </configuration>
</plugin>

再次运行分析目标,就会发现没有未使用的依赖了。

$ mvn dependency:analyze

输出如下:

[INFO] --- maven-dependency-plugin:3.1.2:analyze (default-cli) @ find-unused ---
[INFO] No dependency problems found
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.272 s
[INFO] Finished at: 2020-05-31T17:43:48+09:00
[INFO] ------------------------------------------------------------------------

6. 总结

在本文中,我们学习了如何查找未使用的Maven依赖项。最好定期检查未使用的依赖项,因为它可以提高可维护性并减小项目库的大小。

与往常一样,可以在GitHub上获得代码示例。