我们有许多 Java 项目,它们是使用 Jenkins 构建的 CI。这些部署到我们自己的 Nexus 服务器就好了。问题是,我们需要将这些库提供给第三方,但没有源代码。因此,对于每个项目,在 Nexus 中我们都有:
- 为我们的开发人员发布存储库(包括已部署的源代码)
- 我们的开发人员的快照存储库(包括已部署的源代码)
- 第三方发布存储库(仅 JAR + POM)
- (最好拥有):第三方快照存储库(仅限 JAR + POM),用于第三方夜间构建
问题是:在 Jenkins/Nexus 世界中,这通常是如何处理的?我希望在 Jenkins 中有一个“自动”处理 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 文档来看,似乎无法在同一个构建生命周期中使用多个存储库,更不用说我们需要/不需要基于目标 repo 的源。
我可以在 Jenkins 中使用 Maven“目标和选项”创建一个作业:clean deploy -P third-party
然后使用“默认”数据添加构建后操作 - “将工件部署到 Maven 存储库” - 但在这种情况下,只有SNAPSHOT 将同时存储到 repo,通过Jenkins Maven Release Plug-in 发布的工件仅进入一个存储库。
任何实用的想法如何在不使我们的 CI 工作层次结构过于复杂的情况下做到这一点?
提前致谢!