Перейти к основному содержимому

Найти неиспользуемые зависимости Maven

· 3 мин. чтения

1. Обзор

При использовании Maven для управления зависимостями нашего проекта мы можем потерять представление о том, какие зависимости используются в нашем приложении.

В этом кратком руководстве мы расскажем, как использовать плагин зависимостей Maven , плагин, который помогает нам находить неиспользуемые зависимости в нашем проекте.

2. Настройка проекта

Давайте начнем с добавления пары зависимостей, slf4j-api (ту, которую мы будем использовать) и common-collections (ту, которую мы не будем использовать):

<dependencies>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
</dependencies>

Мы можем получить доступ к плагину зависимостей Maven, не указывая его в нашем файле pom. В любом случае мы можем использовать определение pom.xml , чтобы указать версию, а также некоторые свойства, если это необходимо:

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

3. Пример кода

Теперь, когда мы настроили наш проект, давайте напишем строку кода, в которой мы используем одну из зависимостей, которые мы определили ранее:

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

LoggerFactory из библиотеки Slf4J возвращается в методе, но библиотека общих коллекций не используется, что делает ее кандидатом на удаление.

4. Найдите неиспользуемые зависимости

Используя плагин зависимостей Maven, мы можем найти зависимости, которые не используются в нашем проекте. Для этого мы вызываем цель анализа плагина:

$ mvn dependency:analyze

[INFO] --- maven-dependency-plugin:3.1.1:analyze (default-cli) @ maven-unused-dependencies ---
[WARNING] Unused declared dependencies found:
[WARNING] commons-collections:commons-collections:jar:3.2.2:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.225 s
[INFO] Finished at: 2020-04-01T16:10:25-04:00
[INFO] ------------------------------------------------------------------------

Для каждой зависимости, которая не используется в нашем проекте, Maven выдает предупреждение в отчете об анализе.

5. Укажите зависимости как используемые

В зависимости от характера проекта иногда нам может понадобиться загружать классы во время выполнения, например, в проекте, ориентированном на плагины.

Поскольку зависимости не используются во время компиляции, плагин maven-dependency-plugin выдает предупреждение о том, что зависимость не используется, хотя на самом деле это так. Для этого мы можем принудительно указать плагину, что используется библиотека.

Мы делаем это, перечисляя зависимости внутри свойства usedDependencies :

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<usedDependencies>
<dependency>commons-collections:commons-collections</dependency>
</usedDependencies>
</configuration>
</plugin>

Снова запустив цель анализа , мы видим, что неиспользуемая зависимость больше не учитывается в отчете.

6. Заключение

В этом коротком руководстве мы узнали, как найти неиспользуемые зависимости maven. Рекомендуется регулярно проверять наличие неиспользуемых зависимостей, поскольку это повышает удобство сопровождения и уменьшает размер библиотеки нашего проекта.

Как всегда, полный исходный код со всеми примерами доступен на GitHub .