Почему Maven не может найти мой артефакт SNAPSHOT, когда я могу нормально загрузить его вручную?

У меня самая простая в мире система Maven/Jenkins/Nexus.

Maven работает через Jenkins десятки раз в день и развертывает SNAPSHOTс нашим хранилищем Nexus просто отлично.

Каждый раз в голубой луне, по-видимому, без причины, запускает другую работу Maven, которая требует разрешения SNAPSHOTс не получится. В этих редких случаях он терпит неудачу, когда Мэйвен говорит мне, что больше не может найти SNAPSHOTs, что он загружен во многих случаях несколько часов назад.

Если я укажу свой веб-браузер на то место хранилища, которое использует Maven, я могу найти их просто отлично.

Непосредственно перед этими ошибками я всегда вижу (как и в случае успеха) кучу maven-metadata.xml загружаемые файлы. Предположительно эти файлы говорят Maven что-то о том, как взять, например 1.009-SNAPSHOT и превратить его в 1.009-somehugetimestamphere,

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

(Я также вижу различные ссылки на resolver-status.properties в выводе отладки, который, как представляется, является другим недокументированным файлом, записанным в локальный репозиторий, который отслеживает что-то, имеющее отношение к разрешению, но, признаюсь, я не знаю, что.)

Мой общий вопрос: как именно Maven выполняет загрузку, разрешение и проверку SNAPSHOTs? Предполагая, что информация о хранилище является действительной (в конце концов, это задание работает 90% времени и дает сбой 10% времени без изменений), какие шаги Maven предпринимает с данным хранилищем, чтобы найти правильное SNAPSHOT?

РЕДАКТИРОВАТЬ: нашел некоторые документы: http://maven.apache.org/ref/3.0.4/maven-repository-metadata/repository-metadata.html хотя это не объясняет, почему ни один из maven-metadata.xml файлы, которые я нахожу в моей установке Nexus 2.0, имеют <latest/> элемент в них. Также не подробно описано, как эти файлы используются.

Моя публикация в списке пользователей вызвала ответ, что это может быть проблемой Nexus, поскольку она может генерировать или не генерировать эти maven-metadata.xml файлы правильно.

1 ответ

На днях я столкнулся с очень похожей проблемой, когда сервер Nexus проксировал другой репозиторий. В моем случае изменение настроек срока действия в Nexus устранило проблему. Я уменьшил "Максимальный возраст артефактов" и "Максимальный возраст метаданных" с 1 дня до 1 минуты.

Другие вопросы по тегам