OSS Nexus: как использовать REST API для извлечения последней версии в виде текста
Я хотел бы получить последнее имя версии (как текст), чтобы иметь возможность переименовать artificats, полученные из Nexus, которые имеют метки времени.
Я создаю архив из нескольких архивов, содержащих внутренние проекты jar, зависимости, связанные скрипты ... Но если упакованные банки являются моментальными снимками, архивы заканчиваются временными метками при загрузке. Эти метки времени заменяют расширение X. X. X-SNAPSHOT архива, и я не могу выполнить автоматический скрипт некоторые задачи, такие как извлечение архива, переименование каталога, создание символических ссылок ...
Я не нашел ничего, связанного с этим в документации REST api. Есть ли простой способ сделать это с помощью REST api или какого-то скрипта?
спасибо.
изменить:
из приведенного ниже ответа мне удалось получить последнюю версию моментального снимка, используя LATEST вместо имени версии:
затем с помощью скрипта я могу получить базовая версия.
#!/bin/bash
VERSION=`curl --silent "http://redmine.saic.int:8081/nexus/service/local/artifact/maven/resolve?r=snapshots&g=com.g2mobility&a=G2-Modem-Mgr&v=LATEST&c=executable&e=tar.gz" | sed -n 's|<baseVersion>(.*)</baseVersion>||p'`
VERSION=`echo "$VERSION" | tr -d ' '`
echo "Version is $VERSION"
спасибо!
3 ответов
Nexus имеет следующий API REST для описания того, как разрешаются модули Maven:
пример
чтобы получить подробную информацию о следующем артефакте:
<groupId>org.cometd.jetty</groupId>
<artifactId>cometd-jetty-client</artifactId>
<version>1.0-SNAPSHOT</version>
используйте следующий отдых API:
возвращает следующий отчет:
<artifact-resolution>
<data>
<presentLocally>true</presentLocally>
<groupId>org.cometd.jetty</groupId>
<artifactId>cometd-jetty-client</artifactId>
<version>1.0-20090313.100344-2</version>
<baseVersion>1.0-SNAPSHOT</baseVersion>
<extension>jar</extension>
<snapshot>true</snapshot>
<snapshotBuildNumber>2</snapshotBuildNumber>
<snapshotTimeStamp>1236938624000</snapshotTimeStamp>
<sha1>0cbf7163f19bf4586e27632a1f742dd0c0e0036d</sha1>
<repositoryPath>/org/cometd/jetty/cometd-jetty-client/1.0-SNAPSHOT/cometd-jetty-client-1.0-20090313.100344-2.jar</repositoryPath>
</data>
</artifact-resolution>
Это была удаленная публикация eariler, предлагающая альтернативный способ сборки дистрибутивов из содержимого репозитория Maven:
Айви является альтернативным клиентом управления зависимостями, который может быть запущен из следующим образом:
java -jar ivy.jar -settings ivysettings.xml -dependency org.cometd.jetty cometd-jetty-client 1.0-SNAPSHOT -retrieve "distrib/[artifact]-[revision](-[classifier]).[ext]"
на извлечь опция команды ivy подробно, как загруженные файлы должны храниться локально:
-- distrib
|-- cometd-api-1.0-SNAPSHOT.jar
|-- cometd-jetty-client-1.0-SNAPSHOT.jar
|-- cometd-jetty-client-1.0-SNAPSHOT-javadoc.jar
|-- cometd-jetty-client-1.0-SNAPSHOT-sources.jar
|-- cometd-jetty-server-1.0-SNAPSHOT.jar
|-- jetty-6.1.15.jar
|-- jetty-client-6.1.15.jar
|-- jetty-sslengine-6.1.15.jar
|-- jetty-util5-6.1.15.jar
|-- jetty-util-6.1.15.jar
`-- servlet-api-2.5-20081211.jar
правильный артефакт с отметкой времени восстановлено, но номер редакции "моментального снимка" сохраняется, что, как я понимаю, вы пытаетесь сделать.
файл ivysettings детализирует репозитории, которые будут использоваться при загрузке артефактов:
<ivysettings>
<settings defaultResolver="repos"/>
<resolvers>
<chain name="repos">
<ibiblio name="central" m2compatible="true"/>
<ibiblio name="cometd-snapshot" root="https://oss.sonatype.org/content/repositories/cometd-snapshots/" m2compatible="true"/>
</chain>
</resolvers>
</ivysettings>
документация для Maven Resolve Nexus REST API можно найти здесь: https://maven.java.net/nexus-core-documentation-plugin/core/docs/rest.artifact.maven.resolve.html