我们当前的产品基于 Eclipse RCP。当我们尝试将整个代码库放在一个 Eclipse 工作区中并且我们想知道其他人在做什么时,我们开始遇到问题。
这是我们的设置:
- ~225 个 eclipse 项目(全部在 trunk/project 中)
- ~30 个 Eclipse 功能(全部在 trunk/features 中)
- 约 90 万行代码
我们发现了一些不同的瓶颈:
- Windows 上的 SVN 非常慢(尝试过 TortoiseSVN、SmartSVN、命令行 svn),更新可能需要 5-8 分钟以上,而且只更新 10 个小文件。唯一合理的客户端是 subclipse/subversive,但是它们还有其他问题,我们在处理它们时遇到了一些麻烦。
- Eclipse 刷新可能需要 3-5 分钟
- Eclipse 构建可能需要 5-15 分钟
我相信该解决方案限制了任何一个开发人员在任何给定时间需要签出和活动的项目数量,我只是想看看其他人是否有任何适合他们的良好实践/政策。
例如,我的第一个想法是将目标平台设置为主干的最后一个“安全”构建,然后只检查其上的项目。这有效,但不会告诉您是否破坏了任何依赖于您已有效覆盖的项目的项目。
另一个想法是使用项目集并以这种方式检查您需要什么。
还有其他人遇到过这个问题吗?如果是这样,你会采取什么措施来解决这个问题?
Thanks.
我们针对这种配置所采用的策略是围绕以下概念的:部署.
任何项目都是负责建设然后版本控制其要交付的文件集(jar、war、ear,...)。
这意味着:
因此,对于任何给定的项目,实际上只有一个在 Eclipse 中打开,并且它引用来自其他项目的各种库。
这也迫使我们:
- 重新考虑所有项目之间的各种依赖关系(检测要删除的某些循环依赖关系的情况),
- 当我们意识到几个项目太“小粒度”并且需要聚合在一起时,重新检查我们的应用架构。
基本上有两种方法:
- 基于系统,所有应用程序的每个部分都可以一起开发,并且您需要的每个项目都具有源依赖关系
- 基于组件,您的项目没有源依赖项,仅依赖于库。
在 eclipse-plugin 方法中,需要找到一个中间立场:
来自同一域的所有项目(例如“com.mycorp.fileutil[.XXX]
") 可以由 eclipse 项目表示,它们之间具有源依赖关系。但是 " 所需的任何其他组件com.mycorp.fileutil
“不属于该域的部分应该作为库导入,而不是作为源依赖项。因此我们的“以部署为中心,发布优先”的观点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)