将多个 SNAPSHOT 工件部署到 Sonatype OSSRH 中的同一个存储库中

Deploying multiple SNAPSHOT artifacts into the same repository in Sonatype OSSRH

我已经看到 - 但无法让这个(非常相似的)部署如我所愿地工作..

我有一个使用 Maven 和 Maven CMake 插件构建的 C++ 项目。这涉及多个 Maven 配置文件,select 为我在我正在构建的平台上使用的各种 C++ 编译器提供正确的设置。 (Windows 10、Ubuntu 16.04、Ubuntu 18.04、CentOS 7、Raspbian、macOS High Sierra)。我使用 Jenkins 在各种 VMs/Raspberry Pi 上 运行 这个构建 - 通过 Maven Assembly 插件生成 .tar.gz 或 .zip。最终结果是六个存档文件,它们的 classifier/type 各不相同。他们都有相同的 groupId/artifactId.

我希望这些作业中的每一个都使用 nexus-staging-maven-plugin 将其存档部署到 Sonatype 的 OSSRH Nexus 系统。

我将此插件配置为不自动关闭存储库,以便多个构建可以通过 Jenkins(顺序)运行,并部署到同一个存储库。然后我会在网上查看此内容 UI,然后适当地发布或删除它。

当项目的版本号为 0.0.1-SNAPSHOT 时,这工作正常。然而,当我决定(手动)发布它时,通过将版本设置为 0.0.1,并且 运行 我的 Jenkins 构建......部署行为与我在快照时看到的不同。

每个特定于平台的部署都在 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 所做的那样)- 但它需要一个暂存配置文件 ID - 我'我已经使用 rc-list-profiles 目标找到了我的 - 但是当我将其提供给 rc-open 时,它被报告为 "missing or invalid".

看起来这应该是可能的:https://github.com/sonatype/nexus-maven-plugins/blob/master/staging/maven-plugin/WORKFLOWS.md - 这表明您无法创建新的暂存配置文件 ID;它们是由 Nexus 分配的。

为什么 SNAPSHOT 和非 SNAPSHOT 部署之间的机制不同?

亲切的问候,马特

我更新了 。根据第 6.6 点,SNAPSHOT 不能以原子方式发布。没有已知的解决方法。