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

时间:2019-06-18 21:27:11

标签: maven native nexus maven-release-plugin

我见过Building and deploying native code using 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组件插件生成.tar.gz或.zip。最终结果是六个归档文件,它们的分类器/类型不同。它们都具有相同的groupId / artifactId。

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

我已将此插件配置为不自动关闭存储库,以便可以通过Jenkins(依次)运行多个构建,并部署到同一存储库。然后,我将在Web UI中对此进行检查,然后适当地释放或删除它。

当项目的版本号为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一样)-但它需要一个登台配置文件ID-我已经使用过rc-list-profiles目标是寻找我的-但是当我将其提供给rc-open时,报告为“丢失或无效”。

似乎应该可行:https://github.com/sonatype/nexus-maven-plugins/blob/master/staging/maven-plugin/WORKFLOWS.md-这表明您无法创建新的登台配置文件ID;它们是由Nexus分配的。

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

问候,马特

1 个答案:

答案 0 :(得分:0)

我已经更新了https://stackoverflow.com/a/40954957/14731。根据第6.6点,不能自动释放SNAPSHOT。没有已知的解决方法。