我们有许多Java项目,这些项目都是使用Jenkins构建的CI。这些部署到我们自己的Nexus服务器上就好了。 问题是,我们需要将这些库提供给第三方,但没有源代码。 所以对于每一个项目,在的Nexus我们:将Maven工件部署到具有不同设置的多个存储库
- 发布为我们的开发者资源库(包括部署的源代码)
- 快照库为我们的开发人员(包括部署的源代码)
- 第三方版本存储库(仅限JAR + POM)
- (并且会很好):第三方快照存储库(仅限JAR + POM)第三方每晚构建
现在的问题是:这在Jenkins/Nexus世界中通常如何处理?我更愿意在Jenkins中有一个单独的Job,它可以“自动”处理CI构建和发布(artefact deployment)过程。 目前我使用多个<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的文档,它似乎没有在同一使用多个存储库的方式构建生命周期,更不用说我们需要/不需要基于目标回购的源。
我可以在Jenkins中用Maven的“目标和选项”创建一个工作:clean deploy -P third-party
,然后用“默认”数据添加后构建操作 - “将工件部署到Maven存储库” - 但在这种情况下,只有SNAPSHOT将通过Jenkins Maven Release Plug-in发布的回购和文物只进入一个存储库。
任何实际的想法我怎么能做到这一点,而不会过度复杂我们的CI作业层次?
在此先感谢!
可能重复http://stackoverflow.com/questions/635154/multiple-deployments- in-maven) –
是的,我查了一下。实际上,下面推荐的Wagon插件可能与'merge-maven-repos'具有相同的功能,这可能适用于其他文章。所以最坏的情况下,我们需要实现一个自定义插件,我只是想知道是否有一个“常用的方法”即使在Jenkins的帮助下也能做到。 – Siaynoq