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 .