Как я могу найти POM, который запрашивает отсутствующий POM?

#maven #dependencies #warnings #pom.xml

#maven #зависимости #предупреждения #pom.xml

Вопрос:

Когда я создаю свой проект, я получаю эти предупреждения:

 [INFO] ------------------------------------------------------------------------
[INFO] Building XXX
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for org.eclipse.update:org.eclipse.update.configurator:jar:3.2.0 is missing, no dependency information available
[WARNING] The POM for org.eclipse.emf:org.eclipse.emf.ecore:jar:2.3.2 is missing, no dependency information available
[WARNING] The POM for com.ibm.icu:com.ibm.icu:jar:3.4.4 is missing, no dependency information available
  

В моей сборке я перезаписываю версии этих зависимостей, и сама сборка завершается успешно.

Какой самый быстрый способ исправить предупреждения?

Редактировать: Какой самый быстрый способ найти POM, содержащие эти версии?

Примечание: В моем локальном репозитории 7000 POMS.

Комментарии:

1. Измените pom используемых вами зависимостей или используйте другие версии, где pom верны или даже существуют.

2. Это четко указывает на то, что версия зависимости, которую вы предоставляете, не существует в вашем локальном репозитории. Либо укажите правильную версию, либо попробуйте полностью удалить элемент <version> .

3. @Aprit: Версия в POM моего проекта верна; это неправильная переходная зависимость. Как я могу узнать, какой именно? mvn dependecy:tree отображаются только окончательные версии, а не те, которые были перезаписаны.

Ответ №1:

попробуйте инструменты анализа из плагина зависимостей

особенно mvn dependency:analyze-dep-mgt

Комментарии:

1. 1 действительно, очень полезная команда. Если бы это просто указывало, какой POM вызывает проблему…

Ответ №2:

Несколько вещей, которые могли бы помочь:

mvn dependency:tree -Dverbose=true может выдавать неиспользуемые дубликаты / версии. Однако в моем случае этого было недостаточно, по какой-то причине он не отображал список jar-файлов-нарушителей [?]. Он также не показывает пропущенных потомков jar, которые могут быть полезны, а могут и не быть.

ссылка:http://jira.codehaus.org/browse/MDEP-123

Intellij может перечислить, что, по его мнению, нарушает pom и пути (откройте pom.xml файл, наведите курсор на подчеркнутое «project»:

список зависимостей intellij

К сожалению, ни одного из них мне тоже не хватило.

Затем я заметил, что если вы удалите каталог-нарушитель из вашего ~ /.m2 / репозитория, он будет загружен снова и в основном пуст. Поэтому я думаю, что это сообщение об ошибке иногда может означать «в вашем nexus указана версия, которая на самом деле недоступна для загрузки». Похоже, что maven по умолчанию, если вы запросите, например, commons-logging 1.1.1, попытается загрузить pom для всех известных версий common-logging, тогда, в моем случае, он выдал это предупреждение, но оно было безобидным. Уф!

Итак, по правде говоря, ни один из ваших проектов не может указывать на предупреждение о плохом pom (или плохой версии и т.д.), За исключением индекса метаданных nexus.

Ответ №3:

Вы могли бы использовать dependency: tree, чтобы увидеть, какой pom ссылается на тот, который вам не хватает

Комментарии:

1. Как я уже говорил несколько раз: это показывает мне, что использует сборка. Сборка работает. Но я все еще получаю предупреждения, потому что где-то посередине Maven просматривает POM, которые не являются частью конечного пути к классу. Как мне их увидеть?

2. Очевидным способом было бы удалить переопределения из вашего pom и затем запустить dependency: tree. Это все равно лучше, чем перебирать 7000 poms… Однако я думал, что раздел dependencyManagement переопределит без предоставления вам предупреждений. У вас есть простой пример чего-либо, что порождает проблему такого типа, которую мы могли бы запустить?