У меня есть проект, отличный от Java, который создает артефакт сборки с поддержкой версий, и я хочу загрузить его в репозиторий Nexus. Поскольку проект не является Java, он не использует Maven для сборок. И я бы предпочел не вводить файлы Maven / POM только для того, чтобы загрузить файлы в Nexus.
Ссылки в блогах на Nexus REST API все заканчиваются на стене входа, без ссылки «создать пользователя», которую я вижу.
Итак, каков наилучший (или любой разумный) способ загрузки артефактов сборки в репозиторий Nexus без Maven? "bash + curl" было бы здорово, или даже скрипт Python.
Ответы:
Вы рассматривали возможность использования командной строки Maven для загрузки файлов?
Это автоматически создаст Maven POM для артефакта.
Обновить
В следующей статье Sonatype говорится, что плагин maven "deploy-file" - самое простое решение, но он также предоставляет несколько примеров с использованием curl:
https://support.sonatype.com/entries/22189106-How-can-I-programatic-upload-an-artifact-into-Nexus-
источник
Использование curl:
Вы можете увидеть, что означают параметры здесь: https://support.sonatype.com/entries/22189106-How-can-I-programatic-upload-an-artifact-into-Nexus-
Чтобы разрешить эту работу, я создал новую роль в графическом интерфейсе администратора и добавил к ней две привилегии: загрузка артефактов и загрузка артефактов. Стандартного «Repo: All Maven Repositories (Full Control)» - роли недостаточно. Вы не найдете этого в документации по REST API, поставляемой вместе с сервером Nexus, поэтому эти параметры могут измениться в будущем.
В отношении проблемы Sonatype JIRA было упомянуто, что они «собираются пересмотреть REST API (и способ создания документации) в следующем выпуске, скорее всего, в конце этого года».
источник
Нет необходимости использовать эти команды .. вы можете напрямую использовать веб-интерфейс nexus, чтобы загрузить свой JAR с помощью параметров GAV.
Все очень просто.
источник
Artifact Upload
. К сожалению, я не смог найти ничего в документах, в которых упоминалось бы об этом ... (Edit: я вижу, Эд Я уже указал на это )Вы можете АБСОЛЮТНО сделать это, не используя ничего, связанного с MAVEN. Я лично использую NING HttpClient (v1.8.16, для поддержки java6).
По какой - то причине, Sonatype делает его невероятно трудности , чтобы выяснить , что правильные URL - адреса, заголовки и полезные нагрузки должны быть; и мне пришлось понюхать трафик и угадать ... Там есть несколько мало полезных блогов / документации, однако это либо не имеет отношения к делу
oss.sonatype.org
, либо основано на XML (и я обнаружил, что это даже не работает). Дерьмовая документация с их стороны, ИМХО, и, надеюсь, будущие соискатели найдут этот ответ полезным. Большое спасибо https://stackoverflow.com/a/33414423/2101812 за их сообщение, так как это очень помогло.Если вы выпускаете где-то еще
oss.sonatype.org
, просто замените его на правильный хост.Вот код (с лицензией CC0), который я написал для этого. Где
profile
ваш sonatype / nexus profileID (например,4364f3bbaf163
) иrepo
(например,comdorkbox-1003
) анализируются из ответа, когда вы загружаете свой исходный POM / Jar.Закрытие репо:
Продвигать репо:
Отбросить репо:
Удалить палочки с подписью:
Загрузка файлов:
РЕДАКТИРОВАТЬ1:
Как получить активность / статус репо
источник
Вызовы, которые вам нужно сделать против Nexus, - это вызовы REST api.
Maven-nexus-plugin - это плагин Maven, который вы можете использовать для этих вызовов. Вы можете создать фиктивный pom с необходимыми свойствами и выполнять эти вызовы через плагин Maven.
Что-то вроде:
Предполагаемые вещи:
В конечном итоге все, что это делает, - это создание вызовов REST в Nexus. Существует полный API-интерфейс Nexus REST, но мне не удалось найти для него документацию, которая не находится за платным доступом. Вы можете включить режим отладки для указанного выше плагина и выяснить это, используя
-Dnexus.verboseDebug=true -X
.Теоретически вы также можете войти в пользовательский интерфейс, включить панель Firebug Net и посмотреть на / service POST и вывести путь туда.
источник
для тех, кому это нужно на Java, используя apache httpcomponents 4.0:
источник
В ruby https://github.com/RiotGames/nexus_cli CLI-оболочка для вызовов REST Sonatype Nexus.
Пример использования:
Конфигурация выполняется через
.nexus_cli
файл.источник
Вы также можете использовать метод прямого развертывания с помощью curl. Вам не нужен pom для вашего файла, но он также не будет сгенерирован, поэтому, если он вам нужен, вам придется загрузить его отдельно.
Вот команда:
источник
Если вам нужен удобный интерфейс командной строки или API Python, посмотрите репозиторий.
Используя его, вы можете загрузить артефакт в нексус командой
Чтобы он работал, вам также нужно будет установить некоторые переменные среды
источник
Вы можете вручную загрузить артефакты, нажав кнопку загрузки артефактов на сервере Nexus и указав необходимые свойства GAV для загрузки (обычно это файловая структура для хранения артефакта).
источник
Для последних версий Nexus OSS (> = 3.9.0)
https://support.sonatype.com/hc/en-us/articles/115006744008-How-can-I-programmatically-upload-files-into-Nexus-3-
Пример для версий 3.9.0 - 3.13.0:
источник
@Adam Vandenberg Для кода Java для POST в Nexus. https://github.com/manbalagan/nexusuploader
источник
Вместо этого вы можете использовать curl.
источник