Sonatype Nexus 3-получить последний снимок

мы только что обновили установку nexus до последней версии (3.икс.) Есть ли способ получить последнюю версию данного артефакта моментального снимка? Nexus 2 имел хороший API, который больше не поддерживается.

тот же вопрос (но для старой версии) был дан ответ здесь: Sonatype Nexus REST Api fetch последняя версия сборки

любые идеи высоко ценятся.

лучшие, Даниэль!--1-->

5 ответов


Nexus 2 имел хороший API, который больше не поддерживается.

похоже, вы имеете в виду это:

/service/local/artifact/maven/content
/service/local/artifact/maven/redirect

Если вы просите найти последний x.y.Z-версия SNAPSHOT, где угадываются x, y, z - Nexus никогда не имел этой функциональности (она работала только для плагинов).

Это просто неправда-см. следующую статью, в которой ясно показано, что вы можете указать последнюю версию, выпуск или базу моментальных снимков версии.

https://support.sonatype.com/hc/en-us/articles/213465488-How-can-I-retrieve-a-snapshot-if-I-don-t-know-the-exact-filename-

это возможно, но не в 1-вкладыш.

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


какая шутка re: Nexus 3, не имеющий REST API.

Я нашел хак, который облегчает мою проблему. Оказывается, у ansible есть хороший maven_artifact модуль, который каким-то образом может выяснить последний снимок. И вы можете запустить ansible локально. Таким образом, это выглядит так:

ansible all -i localhost, -c local -m maven_artifact -a "repository_url=https://my-nexus/repository/maven-snapshots/ group_id=com.whatever artifact_id=my-artifact version=2.0-SNAPSHOT dest=./my-artifact.jar"

если вы просите x.y.z-SNAPSHOT по умолчанию последний x.y.z-timestamp версия моментального снимка будет загружена. Не нужно делать ничего дополнительного

если вы просите, чтобы найти последнюю x.y.z-SNAPSHOT версия где x, y, z угадываются - Nexus никогда не имел этой функциональности (он работал только для плагинов). И я не думаю, что есть какой-то хороший вариант для этого. Если это необходимо, вы, вероятно, делаете что-то неправильно. Вы всегда должны работать с определенным версия. На самом деле даже для 1st функциональности я не могу думать о хороших случаях использования.


недавно мы столкнулись с той же проблемой с nexus версии 3.12.1-01, так что определенно нет REST api, чтобы получить последний снимок напрямую

мы смогли решить проблему, используя python one liner

JSON_RESPONSE=$(curl -u un:pw -X GET "http://nexus-host/nexus/service/rest/beta/search/assets?maven.groupId=sample.group.id&maven.artifactId=sample&maven.extension=jar" -H  "accept: application/json")

echo $JSON_RESPONSE | python -c 'import sys, json; lines = json.load(sys.stdin)["items"]; sortedlines = sorted(lines, key=lambda k: k["downloadUrl"], reverse=True); print(sortedlines[0]["downloadUrl"])'

надеюсь, что это помогает


Это возможно, но не в 1-вкладыш. Вам нужно получить метаданные maven.xml для каждого артефакта моментального снимка (обратите внимание, что многомодульные проекты имеют разные временные метки для каждого модуля, включая Родительский).

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