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

Maven не находит локальный артефакт

Иногда maven жалуется, что определенную зависимость, которая построена и упакована локально, не может быть найдена в локальном репозитории при построении другого проекта с его зависимостью. Мы получаем ошибку, например:

Не удалось выполнить цель в проекте X: Не удалось разрешить зависимости для проекта X: Не удалось найти Y в [архивационном хранилище] в кэше в локальном репозитории, разрешение не будет повторно загружено до истечения интервала обновления внутреннего или обновления принудительно →

Где X - построенный проект, а Y - предположительно отсутствующий артефакт. Если вы посмотрите в локальном репозитории, там находится артефакт. Этот артефакт никогда не устанавливается в нашем архиваторе archiva, поэтому проблема основана только на локальном репозитории.

Мы пробовали различные профили в settings.xml и, конечно, "mvn -U". Ничего хорошего и не должны, потому что этот артефакт никогда не идет дальше локального репозитория.

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

Мы столкнулись с этой проблемой с maven 3.0.2 и 3.0.3. Мы используем Archiva 1.0.3 (но опять же это не должно быть фактором). Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

Локальная реплика Maven, в которой артефакты изначально были получены из файла с именем "_maven.repositories" в каталоге артефакта. После его удаления, сборка работала. Этот ответ исправил проблему для меня.

Ответ 2

Поскольку варианты здесь не работают для меня, я поделюсь, как я решил это:

Мой проект имеет родительский проект (со своим собственным pom.xml), который имеет много дочерних модулей, один из которых (A) имеет зависимость от другого дочернего (B). Когда я попробовал mvn package в A, это не сработало, потому что B не удалось разрешить.

Выполнение mvn install в родительском каталоге сделало свою работу. После этого я мог сделать mvn package внутри A, и только тогда он смог найти B.

Ответ 3

Даже в автономном режиме maven будет проверять удаленные репозитории, если для зависимости есть маркер _remote.repositories. Если вам нужно работать в автономном режиме, вам может потребоваться удалить эти файлы.

Простая команда оболочки ниже удаляет эти файлы маркеров. Это безопасно сделать, если вы используете для машины только автономный режим. Я бы НЕ делал это на машине, которая должна загружать файлы из Интернета.

Я использовал эту стратегию на сервере сборки, который отключен от сети. Мы должны перенести в него репозиторий, удалить файлы маркеров, а затем запустить в автономном режиме.

В Linux/Unix вы можете удалить файлы маркеров удаленного репозитория следующим образом:

cd ~/.m2
find . -name "_remote.repositories" -type f -delete

Ответ 4

Мейвен помнит, когда он ничего не нашел. Ключ: "разрешение не будет повторно загружено до тех пор, пока интервал обновления внутреннего устройства не истечет, или обновления не будут принудительно → "

Быстрое решение - удалить локальный подкаталог "репозиторий" для артефакта проблемы - если у вас исправлена ​​проблема с ним.:)

mvn -U будет принудительно обновлять удаленный репозиторий - опять же, предположив, что у вас есть заполненный пульт с указанным артефактом.

Ответ 5

Когда это случилось со мной, это произошло потому, что я слепо скопировал свой файл settings.xml из шаблона и у него все еще был пустой элемент <localRepository/>. Это означает, что локальный репозиторий не используется при разрешении зависимостей (хотя ваши установленные артефакты по-прежнему попадают в местоположение по умолчанию). Когда я заменил его на <localRepository>${user.home}\.m2\repository</localRepository>, он начал работать.

Для * nix это будет <localRepository>${user.home}/.m2/repository</localRepository>, я полагаю.

Ответ 6

Я сталкиваюсь с аналогичной проблемой, когда мой новый проект зависит от oracle jdbc jar (который я установил в своем локальном репозитории и хорошо работаю для других проектов). Я попробовал вариант -U, снова удалив файл .lastupdate или весь каталог и downlaod, но это не сработало. наконец, я удалил каталог и установил его локально снова, он работает.

Ответ 7

Одна из ошибок, которые я обнаружил вокруг Maven, - это когда я поместил файл settings.xml в неправильный каталог. Он должен находиться в папке .m2 под домашним реестром пользователя. Убедитесь, что он находится в нужном месте (вместе с настройками - security.xml, если вы используете это).

Ответ 8

У меня был DependencyResolutionException в Ubuntu Linux, когда я установил локальные артефакты через оболочку script. Решение заключалось в том, чтобы удалить локальные артефакты и установить их снова "вручную" - вызов mvn install:install-file через терминал.

Ответ 9

Даже я столкнулся с этой проблемой и решил ее двумя способами:

1) В вашей среде IDE выберите проект и очистите все проекты, затем установите все зависимости maven, щелкнув правой кнопкой мыши проект → перейти к maven, и в разделе "Обновить зависимости проекта" выберите все проекты одновременно, чтобы установить один и тот же. Как только это будет сделано, запустите конкретный проект

2) Иначе, что вы можете сделать, это проверить в pom.xml зависимости, для которых вы получаете ошибку, и сначала "mvn clean install" этих зависимых проектов, а также установить зависимости maven текущего проекта, в котором вы столкнулись с проблемой. Таким образом будут построены зависимости локального проекта и будут созданы фляги.

Ответ 10

Поймай всех. Когда упомянутые здесь решения не работают (в моем случае это происходит), просто удалите все содержимое из папки/каталога '.m2' и выполните mvn clean install.

Ответ 11

Попробуйте эту команду.

mvn validate