部署Maven构件使用不同的设置多个存储库(Deploying Maven artifact to

2019-07-04 03:25发布

我们有无数的Java项目,这是CI建有詹金斯。 这些被部署到我们自己的Nexus服务器就好了。 问题是,我们需要提供这些库给第三方,但没有源代码。 因此,对于每一个项目,在我们的Nexus有:

  • 发布资料库为我们的开发人员(包括部署的源代码)
  • 快照库为我们的开发人员(包括部署的源代码)
  • 第三方版本库(仅JAR + POM)
  • (和将是很好的):第三方每晚构建第三方快照库(仅JAR + POM)

现在的问题是:这是怎么一般在詹金斯/的Nexus世界如何处理? 我宁愿在詹金斯一个单一的工作,其处理CI建立和释放(假象部署)过程中“自动”。 目前我使用多个<distributionManagement>在我们的“主根的pom.xml”(所有项目包括)简介:

[...]
<profiles>
    <profile>
        <id>default</id>
        <distributionManagement>
            <repository>
                <id>releases</id>
                <name>Release</name>
                <url>http://path/to/nexus/content/repositories/releases/</url>
            </repository>
            <snapshotRepository>
                <id>snapshots</id>
                <name>Snapshot</name>
                <url>http://path/to/nexus/content/repositories/snapshots/</url>
                <uniqueVersion>false</uniqueVersion>
            </snapshotRepository>
        </distributionManagement>
    </profile>
    <profile>
        <id>third-party</id>
        <distributionManagement>
            <repository>
                <id>releases</id>
                <name>Release</name>
                <url>http://path/to/nexus/content/repositories/third-party/</url>
            </repository>
            <snapshotRepository>
                <id>snapshots</id>
                <name>Snapshot</name>
                <url>http://path/to/nexus/content/repositories/third-party-snapshots/</url>
                <uniqueVersion>false</uniqueVersion>
            </snapshotRepository>
        </distributionManagement>
    </profile>
</profiles>

从Maven的文档,这似乎是不相同的构建生命周期中使用多个存储库,更何况一个事实,即我们需要/不需要基于目标回购源的方式。

我可以做一个把戏与创造詹金斯作业,使用Maven“的目标和选项”: clean deploy -P third-party ,然后添加生成后的行动- “部署文物,Maven仓库”与“默认”数据-但在这种情况下,只有快照要既回购,并通过发布文物詹金斯的Maven发布插件正在进入只有一个存储库。

任何实际的想法,而不过分复杂我们CI工作层次我该怎么办呢?

提前致谢!

Answer 1:

你可以只处理这一切的Nexus。 创建包含像在预先配置的示例中使用的一个的图案的库目标“所有但源(的Maven 2)”,并进一步缩小该目标下与限制GROUPID,artifactId的,甚至可能版本另一图案。

然后创建一个使用该库的目标特权,并将其分配到要具有相应的访问权限的用户或角色。

不需要做多个部署或一些这样的..

见http://books.sonatype.com/nexus-book/reference/repository-targets.html



Answer 2:

你可以使用Maven的旅行车插件并上传一个jar到部署阶段的远程位置。



文章来源: Deploying Maven artifact to multiple repositories with different settings