4

我们当前的产品基于 Eclipse RCP。当我们尝试将整个代码库放在一个 Eclipse 工作区中时,我们开始遇到问题,我们想知道其他人在做什么。

这是我们的设置:

  1. ~225 个 Eclipse 项目(全部在主干/项目中)
  2. 约 30 个 Eclipse 功能(全部在主干/功能中)
  3. 约 90 万行代码

我们发现了一些不同的瓶颈:

  1. Windows 上的 SVN 非常慢(尝试过 TortoiseSVN、SmartSVN、命令行 svn),更新可能需要 5-8 分钟以上,并且只更新 10 个小文件。唯一合理的客户是 subclipse/subversive,但是这些还有其他问题,我们遇到了一些麻烦。
  2. Eclipse Refresh 可能需要 3-5 分钟
  3. Eclipse 构建可能需要 5-15 分钟

我相信该解决方案限制了任何开发人员在任何给定时间都需要签出并处于活动状态的项目数量,我只是想看看其他人是否有任何对他们有用的良好实践/政策。

例如,我的第一个想法是将目标平台设置为来自主干的最后一个“安全”构建,然后在此之上检查项目。这有效,但不会告诉您是否破坏了任何依赖于您有效覆盖的项目的项目。

另一个想法是使用项目集并以这种方式检查您需要的内容。

有没有其他人遇到过这个问题?如果是这样,你在做什么来绕过它?

谢谢。

4

1 回答 1

2

我们为这种配置采用的策略是以部署概念为中心的。

任何项目都负责构建并对其要交付的文件集进行版本控制(jar、war、ear 等)。

这意味着:

  • 任何负责测试所有系统的“集成团队”都可以在向 VCS 的一个请求中快速更新所有交付,而无需全部重建。因此出现了“部署”一词:这种方法有助于实现这一点。

  • 更重要的是,对于您的问题,任何项目只需要查询它需要编译的交付,以便工作和进行代码演变。

因此,对于任何给定的项目,实际上只有一个在 eclipse 中打开,它指的是来自其他项目的各种库。

这也迫使我们:

  • 重新考虑我们所有项目之间的各种依赖关系(检测某些要删除的循环依赖关系),
  • 重新检查我们的应用架构,当我们意识到几个项目过于“小粒度”并且需要聚合在一起时。

基本上有两种方法:

  • 基于系统,所有应用程序的每个部分都可以一起开发,并且您对所需的每个项目都有源依赖关系
  • 基于组件,您的项目没有源依赖,仅依赖于库。

在 eclipse-plugin 方法上,需要找到一个中间地带:
来自同一域的所有项目(如“ com.mycorp.fileutil[.XXX]”)可以由 eclipse 项目表示,它们之间具有源依赖关系。但是“ com.mycorp.fileutil”需要的任何其他不属于该域的组件都应该作为库导入,而不是作为源依赖项。因此我们的“以部署为中心,首先发布”的观点。

于 2009-05-15T23:13:14.800 回答