如何仅发布 Nexus Staging 存储库中的部分工件

Posted

技术标签:

【中文标题】如何仅发布 Nexus Staging 存储库中的部分工件【英文标题】:How to release only a part of the artifacts in Nexus Staging repository 【发布时间】:2013-05-19 15:51:12 【问题描述】:

有没有办法只从 Nexus 临时存储库中发布一些工件?

我正在使用 Maven 发布插件将工件推送到 Nexus pro 临时存储库。 然后 QA 团队接管,完成后我从 Web 界面发布暂存存储库。

QA 团队正在从暂存存储库中获取 jar,他们需要用于测试的源 jar。

当我将内容从登台发布到发布存储库时,我不想发布源 jar。

有没有办法只发布 Nexus 临时存储库中的部分项目?

现在我在升级后从发布存储库中手动删除源 jar。 我有几次差点错过,差点删除了错误的文件……

Nexus pro 对 Nexus pro 功能的任何帮助都会非常棒!

谢谢, 埃亚尔

【问题讨论】:

您可以创建两个临时存储库,一个用于工件,另一个用于源。另一种选择是将源代码和二进制文件放在 Nexus 中,并有选择地反映您希望在发布后向客户公开的内容。 这听起来是个不错的解决方案。我正在使用 Maven 发布插件将工件推送到 Nexus。是否可以一次运行将部署“拆分”为两个暂存存储库?我需要具有相同修订号的 jar 和源。 (即不重新构建代码) 使用 Maven 发布插件可能会很棘手。通常源是附加到同一个 Maven 模块的附加工件,因此 Maven 发布插件会推送这两个文件。 【参考方案1】:

我最终使用 Maven 配置文件运行了两个不同的构建。

<profiles>
    <profile>       
        <id>release</id>
        <properties>
            <release-repository-id>RELEASES</release-repository-id>
            <release-repository--url>nexus-server/nexus/service/local/staging/deploy/maven2/</release-repository--url>
        </properties>
    </profile>
    <profile>       
        <id>internal</id>
        <properties>
            <release-repository-id>INTERNAL</release-repository-id>
            <release-repository--url>nexus-server/nexus/content/repositories/INTERNAL</release-repository--url>
        </properties>
    </profile>
</profiles>

然后我在分发管理部分使用了这些属性

<distributionManagement>
    <repository>
        <id>$release-repository-id</id>       
        <url>$release-repository--url</url>
    </repository>
</distributionManagement>

以这种方式,运行“mvn release:prepare -Prelease”和“mvn release:prepare -Pinternal”将工件交付到各自的存储库。

这些构建步骤在同一个签出工作副本上执行,因此我得到所有构建工件的相同修订。

【讨论】:

以上是关于如何仅发布 Nexus Staging 存储库中的部分工件的主要内容,如果未能解决你的问题,请参考以下文章

如何仅删除远程存储库中的文件? [复制]

如何备份 nexus 存储库管理器

Nexus 发布暂存存储库解决方案

当它有父pom时如何正确地将工件部署到nexus?

如何使用没有pom文件或settings.xml文件的maven直接将jar文件上传到nexus存储库?

处理本地存储库中旧快照的最佳方法?