Как получить дерево зависимостей для артефакта? - PullRequest
87 голосов
/ 27 июля 2010

dependency:tree можно использовать для просмотра дерева зависимостей для данного проекта. Но мне нужно увидеть дерево зависимостей для стороннего артефакта.

Думаю, я могу создать пустой проект, но я ищу что-то более простое (мне нужно сделать это для нескольких артефактов).

Ответы [ 6 ]

103 голосов
/ 27 июля 2010

1) Использовать плагин зависимости maven

Создайте простой проект только с pom.xml. Добавьте свою зависимость и запустите:

mvn dependency:tree

К сожалению зависимость mojo должен использовать pom.xml, иначе вы получите следующую ошибку:

Невозможно выполнить mojo: tree. Для этого требуется проект с существующим pom.xml, но при сборке он не используется.

2) Найдите pom.xml вашего артефакта в центральном хранилище maven

Зависимости описаны в pom.xml вашего артефакта. Найдите его, используя инфраструктуру maven.

Перейдите на http://search.maven.org/ и введите свой идентификатор группы и идентификатор артефакта.

Или вы можете перейти к http://repo1.maven.org/maven2/ и перейти сначала с помощью плагина groupId, затем с помощью artifactId и, наконец, с помощью его версии.

Например, см. org.springframework: стержень пружины

3) Использовать плагин зависимостей maven против вашего артефакта

Часть артефакта зависимости - это pom.xml. Это определяет его зависимость. И вы можете выполнить mvn зависимость: дерево на этом пом.

26 голосов
/ 13 октября 2016

Вы можете найти конкретный артефакт с помощью этой команды maven:

mvn dependency:tree -Dverbose -Dincludes=[groupId]:[artifactId]:[type]:[version]

Согласно документации:

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

Представьте, что вы пытаетесь найти файл jar 'log4j-1.2-api' среди различных модулей вашего проекта:

mvn dependency:tree -Dverbose -Dincludes=org.apache.logging.log4j:log4j-1.2-api

больше информации можно найти здесь .

4 голосов
/ 28 июня 2015

Решением является вызов зависимости: дерево с файлом pom.xml артефакта:

mvn -f "$HOME/.m2/repository/$POM_PATH" dependency:tree

См. Также Как вывести список транзитивных зависимостей артефакта из хранилища?

2 голосов
/ 27 июля 2010

Если вы используете текущую версию m2eclipse (что следует делать, если вы используете eclipse и maven):

Выберите пункт меню

Navigate -> Open Maven POM

и введите искомый артефакт.

Pom откроется в редакторе pom, из которого вы можете выбрать вкладку Dependency Hierarchy для просмотра иерархии зависимостей (как следует из названия :-))

1 голос
/ 27 июля 2010

Если ваш артефакт не зависит от конкретного проекта, лучше всего использовать поисковую систему . Многие из них описывают зависимости данного артефакта.

0 голосов
/ 27 августа 2015

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

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

...