#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»:
К сожалению, ни одного из них мне тоже не хватило.
Затем я заметил, что если вы удалите каталог-нарушитель из вашего ~ /.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 переопределит без предоставления вам предупреждений. У вас есть простой пример чего-либо, что порождает проблему такого типа, которую мы могли бы запустить?