У меня большой проект Maven со многими модулями и множеством pom.xml
файлов. Проект изменился, и я подозреваю, что в нем есть некоторые ненужные зависимости. Есть ли команда, которая удаляет все неиспользуемые зависимости от pom?
У меня большой проект Maven со многими модулями и множеством pom.xml
файлов. Проект изменился, и я подозреваю, что в нем есть некоторые ненужные зависимости. Есть ли команда, которая удаляет все неиспользуемые зависимости от pom?
Ответы:
Maven зависимостей плагин поможет, особенно dependency:analyze
цели:
dependency:analyze
анализирует зависимости этого проекта и определяет, какие из них: используются и объявлены; использованный и необъявленный; неиспользованные и заявленные.
Еще одна вещь, которая может помочь выполнить некоторую очистку, - это отчет о конвергенции зависимостей из плагина Maven Project Info Reports .
ignoreNonCompile
создание отчетов о времени выполнения и предоставленных зависимостях как неиспользуемых, для параметра можно установить значение true.
Ты можешь использовать dependency:analyze -DignoreNonCompile
Это выведет список использованных необъявленных и неиспользованных объявленных зависимостей (при этом игнорируются области runtime
/ provided
/ test
/ system
для анализа неиспользованных зависимостей.)
Будьте осторожны при использовании этого, некоторые используемые библиотеки runtime
считаются неиспользованными!
Как уже говорили другие, вы можете использовать зависимость: проанализируйте цель, чтобы найти, какие зависимости используются и объявляются, используются и не декларируются, или не используются и объявляются. Вы также можете найти зависимость: analyse-dep-mgt полезной для поиска несоответствий в вашем разделе dependencyManagement.
Вы можете просто удалить нежелательные прямые зависимости из вашего POM, но если они представлены сторонними jar-файлами, вы можете использовать <exclusions>
теги в зависимостях для исключения сторонних jar-файлов ( подробности и некоторые обсуждения см. В разделе « Исключения зависимостей» ). , Вот пример, исключающий использование общего журнала из зависимости Spring:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.5</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
Вы смотрели на Maven Dependency Plugin ? Это не удалит вещи для вас, но есть инструменты, которые позволят вам сделать анализ самостоятельно. Я думаю о
mvn dependency:tree
У меня была похожая проблема, и я решил написать сценарий, который удаляет зависимости для меня. Используя это, я довольно легко избавился от половины зависимостей.
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
mvn dependency:analyze
. Он просто пытается удалить все зависимости и проверяет, mvn install
работает ли .