Maven nexus v=последняя версия не работает
У меня есть локальный репозиторий Maven nexus, во время выполнения я загружаю / извлекаю jar / war файл из maven repo и копирую его в tomcat. Я использую следующий url для загрузки файла jar / war.
http://localhost/maven/nexus/service/local/artifact/maven/redirect?r=releases&g=com.rdc.app&a=rum&v=LATEST&p=war&c
Когда я передаю param v=1.2.4, я могу загрузить конкретную версию war, Если я хочу последнюю версию, я обнаружил, что v=LATEST вернет последнюю версию файла jar / war в репо.
Проблема в том, что последняя версия в maven repo - 12.53.3 когда я использую v=LATEST, он загружает 12.46.1 i для обновления 12.53.3 снова и снова пробовал v=последний, но результат был таким же, как и раньше.
Также, если последний фляги моментальных снимков, затем отпустить банку/война в=последний релиз только поддержка версий.
Я пытался следовать документации, но, кажется, это не работает.
repository.sonatype.org/nexus-core-documentation-plugin/core/docs/rest.artifact.maven.redirect.html
3 ответа:
Это своего рода ошибка, если вы спросите меня. Я тоже сталкивался с этим.
В принципе, последняя версия не означает "последняя версия", как в 1.2.3 по сравнению с 1.2.2, это означает "версия артефакта, который был развернут совсем недавно". Итак , если у вас есть несколько ветвей проекта и артефакты развертываются вашим сервером непрерывной интеграции, вы не можете доверять последней версии.
Обновление: Проверьте ответ Тари ака манги, для обновленного поведения в Nexus.
Некоторые предполагают (например: @carlspring), что "последняя" на самом деле не указывает на самую высокую версию, доступную, учитывая как релизы, так и snaphots; они предполагают, что это самая последняя развернутая, но я не согласен. Вот что происходит с Sonatype Nexus™ 2.11.2-0:
Предполагая, что начнем с:
<metadata modelVersion="1.1.0"> <groupId>com.acme</groupId> <artifactId>versioningtest</artifactId> <versioning> <latest>1.0.3-SNAPSHOT</latest> <release>1.0.1</release> <versions> <version>1.0.0-SNAPSHOT</version> <version>1.0.0</version> <version>1.0.1-SNAPSHOT</version> <version>1.0.1</version> <version>1.0.2-SNAPSHOT</version> <version>1.0.3-SNAPSHOT</version> </versions> <lastUpdated>20150928081006</lastUpdated> </versioning> </metadata>
(A) Публикация нового 1.0.2-SNAPSHOT только увеличивает метку времени" lastupdated", она не изменяет"latest".
Теперь публикуем 1.0.3:
<metadata> <groupId>com.acme</groupId> <artifactId>versioningtest</artifactId> <versioning> <latest>1.0.3</latest> <release>1.0.3</release> <versions> <version>1.0.0-SNAPSHOT</version> <version>1.0.0</version> <version>1.0.1-SNAPSHOT</version> <version>1.0.1</version> <version>1.0.2-SNAPSHOT</version> <version>1.0.3-SNAPSHOT</version> <version>1.0.3</version> </versions> <lastUpdated>20150928081408</lastUpdated> </versioning> </metadata>
(B) От здесь публикация нового 1.0.2-SNAPSHOT только увеличивает метку времени" lastupdated", она не изменяет"latest". Кроме того, публикация 1.0.2 только увеличивает метку времени" lastupdated", она не изменяет "latest":
<metadata> <groupId>com.acme</groupId> <artifactId>versioningtest</artifactId> <versioning> <latest>1.0.3</latest> <release>1.0.3</release> <versions> <version>1.0.0-SNAPSHOT</version> <version>1.0.0</version> <version>1.0.1-SNAPSHOT</version> <version>1.0.1</version> <version>1.0.2-SNAPSHOT</version> <version>1.0.2</version> <version>1.0.3-SNAPSHOT</version> <version>1.0.3</version> </versions> <lastUpdated>20150928081620</lastUpdated> </versioning> </metadata>
Итак, в заключение:
Между двумя снимками, даже если младший приходит более поздним, самый старый опубликованный выиграет последнее место, если у него есть более высокая версия. А)
Между выпуском и моментальным снимком, более высокая версия выигрывает последнее место. (B)
Следовательно, Sonatype Nexus™ 2.11.2-0, "последний" указывает на самую высокую версию, доступную, учитывая как релизы, так и snaphots.
Q. E. D.