问题描述
我们有几个相互依赖的多模块项目。所以是这样的:
- 消息传递
- 框架
- 其他组件
他们有单独的源代码控制存储库,可以说,消息传递和其他组件中的子模块正在使用来自framework子模块的包。所有项目都是基于 OSGI 的多模块 Maven 项目。它们都有一个服务器部分和一个单一来源的 GUI 部分(Eclipse RAP+RCP)。因此,所有这些多模块项目的最终构建都是基于 maven 的三步构建(因为 Tycho 构建不能与普通的旧 Maven 构建混合):
- 构建服务器部分
- 构建 RAP GUI 部分
- 构建 RCP GUI 部分
最后还有一个最终产品多模块 maven 项目(我们称之为ourproduct),它使用消息传递、框架和其他组件。项目ourproduct的版本号与其他三个不同,它们具有共同的版本号。
我们使用 Jenkins 构建整个事物,并且作业根据依赖关系树相互触发。该公司决定使用快照在 3 个框架项目开发人员和我们的产品开发人员之间获得更直接和快速的反馈。这可能是一个好主意,但是有一个大问题。
如果在构建链中出现问题,快照存储库包含消息、框架和其他组件的快照,它们不能一起工作。这样,我们产品的开发人员必须等待一个工作快照集(否则他们甚至无法编译一些时间)。另一个问题是,在构建过程中,快照集也不一致。
主意
对于消息传递、框架和其他组件,Jenkins有明确的最终工作。如果这完成了,那么这组快照必须工作,所以我们的产品团队可以使用它。所以我需要以某种方式收集构建链创建的快照,并且只有在整个构建链成功时才部署它们。
- 有没有可能做到这一点?
我的想法是简单地将工作更改为仅安装而不是部署。然后最后我可以在本地 maven repo 中查找构建的快照,并通过脚本部署它们。
- Maven 有一些暂存概念(可能仅适用于 Nexus pro)。它有关于快照的任何内容吗?
欢迎任何想法。但是我无法改变使用快照的事实。所以说服我使用发行版而不使用快照是没有用的。