Как Maven анализирует версии SNAPSHOT из репозиториев - PullRequest
0 голосов
/ 13 февраля 2019

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

Репо имеет следующую структуру папок (при условии, что проект maven a.b.c:a.b.c.d:1.0.0-SNAPSHOT):

<repo-root>
|-a
 |-b
  |-c
   |-a.b.c.d
    |-maven-metadata.xml
    |-1.0.0-SNAPSHOT
     |-a.b.c.d-1.0.0-20190213.120000-1.jar
     |-maven-metadata.xml

Если я пытаюсь разрешить abcd-SNAPSHOT, это работает просто отлично.В журнале maven я вижу, что он ищет a/b/c/a.b.c.d/1.0.0-SNAPSHOT/maven-metadata.xml, а затем загружает правильный JAR-файл.Пока все хорошо.

Но если я изменю квалификатор на что-то другое (например, удаляя -1 в конце), maven не сможет разрешить файл!Вместо поиска

<repo-root>/a/b/c/a.b.c.d/1.0.0-SNAPSHOT/<jar-file>

(что было бы правильно), он смотрит на

<repo-root>/a/b/c/a.b.c.d/1.0.0-20190213.120000/<jar-file>

, что, очевидно, неправильно.Это происходит с каждым классификатором, который не соответствует формату

\d\.\d\.\d-\d{8}.\d{6}-\d+

Почему Maven не может разрешить такие квалификаторы?Формат указан где-то или это просто ошибка maven?

1 Ответ

0 голосов
/ 13 февраля 2019

Как правило, версия Maven может быть любой строкой (например, 1.2.3-RELEASE, 1-1456 или dontknow).Версии, оканчивающиеся на -SNAPSHOT, имеют особое значение, что они разрешены в последней версии сборки.

Различные версии для одного конкретного SNAPSHOT (например, 1.0-SNAPSHOT) отличаются временными метками, которые вы указали в своем вопросе.Я не знаю, действительно ли этот формат является «стандартом Maven», но я предполагаю, что он одинаков для всех распространенных менеджеров репозитория, и у вас возникли проблемы с его неиспользованием.Я настоятельно рекомендую не использовать различные виды временных меток, даже если вы заставляете его работать, потому что каждый плагин Maven ожидает, что версии SNAPSHOT с метками времени имеют определенный и заданный формат (будь то «официальный» или нет).

Кстати: мне было бы очень интересно услышать, почему вы разрабатываете свой собственный репозиторий Maven.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...