我们有几个相互依赖的多模块项目。所以像这样:
他们有单独的源代码控制存储库,可以说, 消息传递 和 其他 组件内的子模块正在使用来自 框架 子模块的捆绑包。所有项目都是基于OSGI的多模块Maven项目。它们全部都有一个服务器部分和一个来源GUI部分(Eclipse RAP + RCP)。因此,这最终针对所有这些多模块项目以三步为 基础的Maven构建(因为Tycho构建不能与普通的旧Maven构建混合使用) :
最后是一个 最终产品 多模块Maven项目(我们称其为 ourproduct ),它使用 消息传递 , 框架 和 其他组件 。项目 ourproduct的 版本号与其他三个版本号不同的其他版本号相同。
我们使用Jenkins构建整个过程,而作业依赖于依赖关系树而相互触发。该公司决定使用快照在3个框架项目开发人员和 ourproduct 开发人员之间获取更直接,更快速的反馈。这可能是一个不错的主意,但是存在很大的问题。
如果建筑物链中的东西坏了,比快照库包含的快照 消息 , 框架 和 othercomponent ,不能一起工作。这样, 我们产品 的开发人员就必须等待有效的快照集(否则他们甚至无法编译一段时间)。另一个问题是,在构建期间,快照集也不一致。
对于 消息传递 , 框架 和 其他组件 ,Jenkins中有一个明确的 最终任务 。如果完成,则快照组必须正常工作,因此 我们的产品 团队可以使用它。 因此,我需要以某种方式收集由构建链创建的快照,并仅在整个构建链成功的情况下才部署快照。
我的想法是简单地将作业更改为仅 安装 而不 部署 。然后最后,我可以在本地Maven存储库中查找构建的快照,并通过脚本进行部署。
任何想法都欢迎。但是我不能改变使用快照的事实。因此,说服我使用发行版和快照没有任何用处。
我找到了一个不错的解决方法。采取的步骤:
mvn deploy -DaltDeploymentRepository = stagingFolder :: default :: file:/// c:/ mytempfolder
使用此设置运行任意数量的构建步骤, 工件将收集在该文件夹中。您甚至可以毫无问题地恢复构建。您可以覆盖工件(但是我不推荐这样做)
完成所有构建步骤后,您必须运行以下命令(请参阅http://mojo.codehaus.org/wagon-maven-plugin/copy-mojo.html)。这将上传临时存储在文件夹中的所有工件:
mvn org.codehaus.mojo:wagon-maven-plugin:copy -Dwagon.source = file:/// c:/ mytempfolder -Dwagon.target = http://somerepository.com/repositories/snapshots -Dwagon.targetId = idreferredinsettingsxmltogetauthorization
旅行目标应在没有pom文件的文件夹中运行(因此必须在没有项目的情况下运行)。否则, fromDir 参数会出现奇怪的错误。