Как предоставить доступ по URL-адресу к последнему снимку артефакта в Nexus 2.x?

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


person chad    schedule 14.02.2012    source источник
comment
У меня был точно такой же вопрос. Я пишу сценарии, которые загружают артефакты из Nexus и динамические URL-адреса для снимков, которые раздражают.   -  person Geert Schuring    schedule 23.07.2014


Ответы (4)


Обратите внимание

Базовый «перенаправление» Nexus REST API может быть используется для извлечения любой версии артефакта из указанного репозитория:

Например:

https://repository.sonatype.org/service/local/artifact/maven/redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST

Параметр v может иметь значение, подобное 1.0-SNAPSHOT, и в этом случае Maven вернет последний снимок с отметкой времени, хранящийся в репозитории. Точно так же специальное значение «ПОСЛЕДНЯЯ» должно делать то же самое, если более свежая выпущенная версия отсутствует.

person Mark O'Connor    schedule 14.02.2012
comment
Обязательно используйте идентификатор репозитория, а не имя репозитория для параметра r. - person evandor; 07.03.2012
comment
Хотел бы я дать вам два голоса! Единственное, что вы пропустили, — это (работающую?) ссылку на документацию REST API, которая должна выглядеть примерно так: «ваш экземпляр нексуса»/nexus-core-documentation-plugin/core/docs/index.html. - person Tomislav Nakic-Alfirevic; 14.12.2012
comment
@TomislavNakic-Alfirevic Да, ссылка в моем ответе больше не работает .... Sonatype немного меняет свой сайт и настройку сервера ... Ужасно жаль, что нет основного справочного сайта для документов REST API. Как вы сказали, остальные документы доступны из локального экземпляра. - person Mark O'Connor; 16.12.2012
comment
Это рабочий URL-адрес документация @Mark O'Connor, вы можете обновить ответ, чтобы читателям не приходилось просматривать комментарии. - person Sinisha Mihajlovski; 22.10.2013
comment
У этого есть и темная сторона: Nexus: почему вы не должны использовать LATEST - person Ondra Žižka; 08.01.2015
comment
У меня это не работало для моментальных снимков из-за политики репозитория RELEASE. Что сработало для релизов, так это repository.sonatype.org/ service/local/artifact/maven/ ... и для моментальных снимков oss.sonatype.org/service/local/artifact/maven/ ... - person Daniel Widdis; 21.09.2015
comment
это устарело в Nexus 3 или это моя установка? - person Thiago Arrais; 01.02.2017
comment
@ThiagoArrais Этот REST API пока недоступен в Nexus 3. См. Nexus Jira. - person ᴠɪɴᴄᴇɴᴛ; 08.03.2017
comment
Обычно это работает нормально для меня, но я только что столкнулся с проблемой. Я только что выпустил версию 2.0 для releases, затем запустил 2.1-SNAPSHOT, API resolve и redirect по-прежнему возвращают артефакт 2.0 с v=LATEST. когда я использую v=2.1-SAPSHOT, я получаю ожидаемый результат. Мои параметры: resolve?g=gid&a=artifactName&v=LATEST&r=snapshots&p=jar, где gid и artifactName — ссылки. - person Brett Ryan; 15.05.2017
comment
Следует добавить, что использование API рестлета для загрузки больших артефактов оказывает заметное влияние на производительность, см.: community.sonatype.com/t/ - person Joel Arnold; 05.09.2019
comment
Кажется, центральный прокси больше не поддерживает моментальные снимки: Retrieval of /foo/3.3-SNAPSHOT/foo-3.3-SNAPSHOT-jar-with-dependencies.jar from M2Repository(id=central-proxy) is forbidden by repository policy RELEASE. Есть идеи? - person Martin Monperrus; 26.03.2020

на моей машине Nexus все результаты для:

http://nexushost.domain/nexus/content/repositories/snapshots/com/company/elasticsearch-river-mongodb/1.2.3-SNAPSHOT/

вот такие: *-1.2.3-20131204.143026-1.zip

поэтому я не могу получить к нему доступ напрямую, потому что мне нужно предоставить более подробную информацию, которая является динамической.

Пример с "...redirect?r=central-proxy&g=log4j&a=log4j&v=LATEST" работает, если я открываю его в браузере, но не когда я его устанавливаю с какой-то Linux-машины, используя:

/usr/share/elasticsearch/bin/plugin --url "http://localhost:8081/nexus/service/local/artifact/maven/redirect?r=snapshots&g=com.comapny.application&a=elasticsearch-river-mongodb&v=1.2.3-SNAPSHOT&p=zip" --install river-mongodb

Итак, мое временное решение использует wget :

wget -O /tmp/elasticsearch-river-mongodb.zip "http://nexushost.domain/nexus/service/local/artifact/maven/redirect?r=snapshots&g=com.comapny.application&a=elasticsearch-river-mongodb&v=1.2.3-SNAPSHOT&p=zip"

затем установите ПОСЛЕДНЮЮ версию из локального файла.

person matei.nick    schedule 05.12.2013

Если вы ищете последнюю версию моментального снимка, просто попросив, скажем, «1.0-SNAPSHOT», вы получите последнюю версию моментального снимка этого артефакта.

Однако, если вы ищете «последнюю версию», синтаксис «v=LATEST» будет работать, но имейте в виду, что это ключевое слово может возвращать последнюю версию того снимка, который вы ищете, или только что завершенный выпуск, или эта ДРУГАЯ ветвь того же артефакта, которая является версией впереди и все еще находится в «-SNAPSHOT».

Если вы ищете самую последнюю версию, тогда да, используйте "v=LATEST". Если вы ищете последнюю версию, вы также можете запросить "v=RELEASE". Если у вас есть группа репозиториев, вы можете ссылаться как на репозитории моментальных снимков, так и на репозитории выпусков, добавив к URL-адресу что-то вроде:

"...v=RELEASE&r=public"

Это должно выполнять поиск по всем вашим «сгруппированным» репозиториям.

person EJC    schedule 11.03.2015

Каждый репозиторий имеет свой собственный URL-адрес (вы можете увидеть его в браузере репозитория). Если вы откроете его, вы сможете просмотреть идентификаторы групп и артефактов до своего артефакта. Это ваш URL-адрес, например, такой: http://nexushost.domain/content/repositories/snapshots/com/example/group/artifact/1.2.3-SNAPSHOT/1.2.3-SNAPSHOT.jar

person dunni    schedule 14.02.2012
comment
Мы используем версии моментальных снимков с отметкой времени, так что это не так просто. - person chad; 14.02.2012
comment
@Чад. Это то, что делает -SNAPSHOT. Думайте об этом как о символической ссылке на последнюю версию с отметкой времени. - person Alexander Pogrebnyak; 14.02.2012
comment
Это определенно не работает для меня. Я не ожидал, что прямой http-просмотр репозитория даст мне такой уровень проверки разрешения метаданных. Возможно ли, что мне нужно как-то настроить репозиторий для этого . . . - person chad; 14.02.2012
comment
Это работает только с Maven 2, где вы можете загружать артефакты моментальных снимков без меток времени. В Maven 3 это поведение было удалено. - person Geert Schuring; 23.07.2014
comment
Да, в этом случае вы можете использовать соответствующий URL-адрес Nexus: nexushost.domain/service/local/artifact/maven/ - person dunni; 23.07.2014