Подтвердить что ты не робот

Просмотр дерева зависимостей в Maven?

Я хотел бы убедиться, что я не включаю дубликаты библиотек в проект Maven. Я занимаю довольно много зависимостей от нескольких разных хранилищ, включая основной, репозиторий Spring и репозиторий JBoss. Как я могу увидеть график зависимостей, чтобы я мог убедиться, что я не зависим от нескольких версий одной библиотеки?

Это было бы вроде облом, если бы я включил что-то вроде org.springframework:spring-core:3.0.1.RELEASE и org.springframework:org.springframework.spring-core:3.0.5.RELEASE, которые на самом деле отображались как разные зависимости, как это ни странно, поскольку репозиторий Spring называет вещи странно. Что я могу сделать, чтобы убедиться, что у меня нет дубликатов зависимостей?

4b9b3361

Ответ 1

dependency:tree плагин maven должен делать то, что вы хотите, и показывать дерево.

В качестве альтернативы заставьте Maven2 скопировать зависимости в target/lib, чтобы скопировать артефакты в каталог target/lib, где также должны отображаться дубликаты, но вам все равно нужно grep все POM в ~/.m2/repository, чтобы увидеть, какую библиотеку вытягиваете в какой версии вручную, и что будет занимать много времени для больших локальных репозиториев.

Ответ 2

Повторяющиеся библиотеки могут быть проблемой, но дублирующие классы могут существовать, даже если библиотеки не дублируются. JBoss Tattletale может анализировать набор файлов jar и создавать отчет, в котором перечислены все дублированные классы. Theres плагин Maven для запуска отчета - см. http://docs.jboss.org/tattletale/userguide/1.2/en-US/html/maven.html

Ответ 3

Если вы хотите получить графическое, доступное для поиска представление дерева зависимостей (включая все модули из вашего проекта, транзитивные зависимости и информацию о выселении), проверьте UpdateImpact: https://app.updateimpact.com (бесплатный сервис).

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

Отказ от ответственности: я являюсь одним из разработчиков сайта