OSS Nexus: как использовать REST API для получения последней версии в виде текста

Я хотел бы получить имя последней версии (в виде текста), чтобы иметь возможность переименовывать артефакты, полученные из Nexus, которые имеют временные метки.

Что я делаю, так это создаю архив из нескольких архивов, содержащих внутренние jar-проекты, зависимости, связанные скрипты и т. д. Эти временные метки заменяют расширение архива X.X.X-SNAPSHOT, и я не могу создать какой-либо автоматический сценарий для выполнения некоторых задач, таких как извлечение архива, переименование каталога, создание некоторых символических ссылок, ...

В остальной документации по API ничего связанного с этим не нашел. Есть ли простой способ сделать это с остальным 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>|\1|p'`

VERSION=`echo "$VERSION" | tr -d ' '`

echo "Version is $VERSION"

Спасибо!


person fewe    schedule 31.08.2012    source источник


Ответы (3)



Это была ранее удаленная публикация, предлагающая альтернативный способ сборки дистрибутивов из содержимого репозитория Maven:

Ivy – это альтернативный клиент управления зависимостями, который можно запустить из командная строка следующим образом:

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

Артефакт с правильной отметкой времени извлекается, но номер версии «SNAPSHOT» сохраняется, что, как я понимаю, вы пытаетесь сделать.

В файле 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>
person Mark O'Connor    schedule 31.08.2012
comment
Это то, что я хочу сделать, но мы используем maven и не хотим переходить на другой менеджер зависимостей. - person fewe; 04.09.2012

Документацию по REST API Maven Resolve Nexus можно найти здесь: https://maven.java.net/nexus-core-documentation-plugin/core/docs/rest.artifact.maven.resolve.html.

person Jared    schedule 13.06.2014
comment
привет, можно ли это сделать без плагина Nexus? Спасибо - person august0490; 27.10.2017