Почему Maven не может найти мой артефакт SNAPSHOT, когда я могу нормально загрузить его вручную?
У меня самая простая в мире система Maven/Jenkins/Nexus.
Maven работает через Jenkins десятки раз в день и развертывает SNAPSHOT
с нашим хранилищем Nexus просто отлично.
Каждый раз в голубой луне, по-видимому, без причины, запускает другую работу Maven, которая требует разрешения SNAPSHOT
с не получится. В этих редких случаях он терпит неудачу, когда Мэйвен говорит мне, что больше не может найти SNAPSHOT
s, что он загружен во многих случаях несколько часов назад.
Если я укажу свой веб-браузер на то место хранилища, которое использует Maven, я могу найти их просто отлично.
Непосредственно перед этими ошибками я всегда вижу (как и в случае успеха) кучу maven-metadata.xml
загружаемые файлы. Предположительно эти файлы говорят Maven что-то о том, как взять, например 1.009-SNAPSHOT
и превратить его в 1.009-somehugetimestamphere
,
(Я никогда не находил никакой документации по этому файлу, и он, кажется, не помечает ни одно из имен файлов, содержащихся в нем, как "последние" или что-то подобное. На самом деле я не могу понять, как он вообще пригодится, но ясно, что он должен быть.)
(Я также вижу различные ссылки на resolver-status.properties
в выводе отладки, который, как представляется, является другим недокументированным файлом, записанным в локальный репозиторий, который отслеживает что-то, имеющее отношение к разрешению, но, признаюсь, я не знаю, что.)
Мой общий вопрос: как именно Maven выполняет загрузку, разрешение и проверку SNAPSHOT
s? Предполагая, что информация о хранилище является действительной (в конце концов, это задание работает 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 минуты.