Я видел Сборка и развертывание нативного кода с использованием Maven - но я не могу заставить это (очень похожее) развертывание работать так, как мне хотелось бы ...
У меня есть проект C ++, который создается с помощью Maven, и плагин Maven CMake. Это включает несколько профилей Maven, чтобы выбрать правильные настройки для различных компиляторов C ++, которые я использую на платформах, на которых я строю. (Windows 10, Ubuntu 16.04, Ubuntu 18.04, CentOS 7, Raspbian, macOS High Sierra). Я использую Jenkins для запуска этой сборки на различных виртуальных машинах / Raspberry Pi - получая .tar.gz или .zip через плагин Maven Assembly. Окончательный результат - шесть архивных файлов, которые различаются по своему классификатору / типу. Все они имеют одинаковый идентификатор группы / идентификатор артефакта.
Я хотел, чтобы каждое из этих заданий развернуло свой архив в системе Nexus Sonatype OSSRH, используя плагин nexus-staging-maven-plugin.
Я настроил этот плагин так, чтобы он не закрывал хранилище автоматически, чтобы несколько сборок могли запускаться через Jenkins (последовательно) и развертываться в одном репо. Затем я просматриваю это в веб-интерфейсе и затем отпускаю или удаляю соответствующим образом.
Это работало нормально, когда проект имел номер версии 0.0.1-SNAPSHOT. Однако, когда я решил (вручную) выпустить это, установив версию 0.0.1 и запустив мои сборки Jenkins ... поведение развертывания отличалось от того, что я видел, когда это был SNAPSHOT.
Каждое развертывание для конкретной платформы создавало свой собственный промежуточный репозиторий в репозитории моментальных снимков OSSRH.
После прочтения https://github.com/sonatype/nexus-maven-plugins/tree/master/staging/maven-plugin, Я испробовал множество этих настроек, но, похоже, ничего не работает:
<skipStagingRepositoryClose>true</skipStagingRepositoryClose>
<skipStaging>true</skipStaging>
<autoReleaseAfterClose>false</autoReleaseAfterClose>
<stagingRepositoryId>${project.artifactId}-${project.version}-repo</stagingRepositoryId>
Цель nexus-staging: rc-open выглядит так, как будто это может помочь, позволяя мне открыть именованный промежуточный репозиторий (как я пытался сделать с помощью stagingRepositoryId, выше) - но для этого требуется идентификатор профиля промежуточного уровня - я использовал цель rc-list-profile найти мою, но когда я передаю это rc-open, она сообщается как «отсутствующая или недействительная».
Похоже, это должно быть возможно: https://github.com/sonatype/nexus-maven-plugins/blob/master/staging/maven-plugin/WORKFLOWS.md - это говорит о том, что вы не можете создать новый идентификатор промежуточного профиля; что они назначены Nexus.
Почему этот механизм отличается между развертываниями SNAPSHOT и не-SNAPSHOT?
С уважением, Мэтт