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



我已经看到使用 Maven 构建和部署本机代码 - 但无法让这个(非常相似)部署按照我想要的方式工作。

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

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

我将此插件配置为不自动关闭存储库,以便多个构建可以通过 Jenkins(按顺序)运行,并部署到同一个存储库。然后,我将在 Web 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-stageaging:rc-open 目标看起来可能会有所帮助,允许我打开一个命名的暂存存储库(就像我试图对上面的 stagingRepositoryId 所做的那样) - 但它需要一个暂存配置文件 ID - 我已经使用 rc-list-profiles 目标来查找我的 - 但是当我把它交给 rc-open 时,它被报告为"丢失或无效"。

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

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

亲切的问候,马特

我已经更新了 https://stackoverflow.com/a/40954957/14731。根据第 6.6 点,快照不能以原子方式发布。没有已知的解决方法。

最新更新