Как определить, какая зависимость Maven нуждается в отсутствующей зависимости?

Я пытаюсь создать старый проект Maven и получаю сообщение об ошибке:

[ОШИБКА] Не удалось выполнить цель проекта myapp: не удалось разрешить зависимости для проекта com.initech.myapp:war:${buildVersion}: не удалось найти tangosol:tangosol-coherence:jar:3.3-rc1 в http://mvnrepo.initech.com/archiva/repository/initechrepo был кэширован в локальном репозитории, разрешение будет не предпринимать повторных попыток до тех пор, пока не истечет интервал обновления initechrepo или не будут принудительно обновлены -> [Справка 1]

Я посмотрел в pom.xml MyApp, и там нет упоминания о «тангосоле», и нет родительского POM, поэтому я полагаю, что это должна быть транзитивная зависимость.

Обычно я могу использовать плагин Maven Dependency в командной строке с mvn dependency:tree для отображения транзитивных зависимостей. Однако, поскольку зависимость отсутствует, сборка завершается с ошибкой вместо отображения дерева.

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


EDIT: мне известно, почему это не удалось, артефакт отсутствует в нашем локальном репозитории и в центральном репозитории , вопрос в том, какая из моих зависимостей запрашивает это.


person Sled    schedule 31.07.2013    source источник


Ответы (2)


Должен быть лучший способ, но если вы запустите команду в режиме отладки (то есть -X, чтобы полная команда стала mvn -X dependency:tree), то вы увидите распечатку трассировки до того, как сборка умрет:

    ...
[DEBUG]    org.springmodules:spring-modules-cache:jar:0.9:compile
[DEBUG]       opensymphony:oscache:jar:2.3:compile
[DEBUG]       tangosol:tangosol-coherence:jar:3.3-rc1:compile
[DEBUG]       oro:oro:jar:2.0.8:compile
[DEBUG]       org.apache.jcs:jcs:jar:1.3:compile
[DEBUG]          concurrent:concurrent:jar:1.0:compile
    ...

лучшие ответы приветствуются.

person Sled    schedule 31.07.2013
comment
Сладко, это работает. Обратите внимание, что ошибочная зависимость может находиться в самом центре вывода, а не обязательно в конце сообщения об исключении :| - person rogerdpack; 10.06.2016

Мне интересно, почему maven не загрузил требуемую зависимость из MAVEN CENTRAL REPO, если она недоступна в вашем локальном репозитории.

mvn dependency:tree полезен для просмотра иерархии, это означает, что он может сказать вам, какая банка будет зависеть от того, какие другие банки.

Итак, отсюда я могу догадаться, что требуемый jar tangosol-coherence отсутствует в вашем внутреннем репозитории Nexus. то есть

http://mvnrepo.initech.com/archiva/repository/initechrepo  

Таким образом, чтобы преодолеть эту проблему, вам нужно либо установить требуемый jar-файл во внутреннем репозитории Nexus, либо в качестве временного решения вы можете загрузить этот jar-файл и поместить его в локальный системный репозиторий, чтобы вы могли выполнить успешную сборку.

Спасибо

person saurav    schedule 31.07.2013
comment
Да, я все это знал. Вопрос в том, как я могу узнать, какой артефакт зависит от него. - person Sled; 31.07.2013