将 Eclipse 与大型工作区结合使用

2023-12-22

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

这是我们的设置:

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

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

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

我相信该解决方案限制了任何一个开发人员在任何给定时间需要签出和活动的项目数量,我只是想看看其他人是否有任何适合他们的良好实践/政策。

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

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

还有其他人遇到过这个问题吗?如果是这样,你会采取什么措施来解决这个问题?

Thanks.


我们针对这种配置所采用的策略是围绕以下概念的:部署.

任何项目都是负责建设然后版本控制其要交付的文件集(jar、war、ear,...)。

这意味着:

  • 任何负责测试整个系统的“集成团队”都可以通过向 VCS 发出一个请求来快速更新所有交付,而无需全部重建。因此就有了“部署”一词:这种方法促进了部署。

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

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

这也迫使我们:

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

基本上有两种方法:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Eclipse 与大型工作区结合使用 的相关文章

  • 日食上的垂直白线[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以将 Eclipse 的代码折叠槽设为黑色 https stackoverflow com questions 1041760 is it possible to make eclipses c
  • 从 Eclipse 中的工作应用程序导出后出现 ClassNotFoundException

    因此 在将项目导出到可运行的 jar 后 我收到此消息 我很不明白为什么会这样 因为应用程序正在运行完美当我在 Eclipse 中选择 运行 时 我已经尝试过提取和打包可靠的库 但没有雪茄 有人知道该怎么办吗 Exception in th
  • 对 HTML 文件的更改未显示在内置的 PhoneGap 3.0 应用程序上

    所以我有一个 Phonegap 3 0 应用程序 project文件夹 它的项目 project platforms android 在 Eclipse 上 问题是当我改变时project www index html 并告诉 Eclips
  • 无法理解如何使用 Android AWS SDK

    我正在构建一个将使用 Amazon 的 SimpleDB 服务的应用程序 它使用亚马逊的AWS 安卓 SDK http aws amazon com sdkforandroid 据我了解 不建议我将 Amazon 凭证 访问 ID 和密钥
  • Android - 如何创建可点击的列表视图?

    我想让列表视图中的所有列表项打开到一个新页面 因此每个列表视图项目都打开到一个我可以使用的新黑色页面 我根本不知道如何实现这个 我已经连续搜索了几个小时 但找不到解决方案的答案 如果有人能够展示和 或解释如何执行此操作而不是提供链接 我们将
  • 使用多个窗口通过 Eclipse 进行调试

    我通常运行双显示器设置 因此我为同一工作区打开两个 Eclipse 窗口 显示不同的文件 当我调试并命中断点时 Eclipse 会切换到 调试 透视图 但它还会在我的两个窗口中显示断点所在的文件 行 即使包含断点的文件在一个窗口中打开 但在
  • 导入的项目抛出 java.lang.ClassNotFoundException

    所以我将一个现有的项目导入到 eclipse 中 但让它工作时遇到了很多麻烦 该项目与其他三个图书馆项目一起提供 谷歌播放服务库 捕获活动 肖像二维码 As soon as I imported the project I went und
  • 在 Eclipse 中加速或关闭 SVN 缓存更新

    每次我打开 Eclipse 时 都会花费很多时间 30 到 60 分钟 来更新 svn 缓存 那么您能告诉我 有什么办法可以加快或关闭 svn 缓存更新吗 如果我关闭svn缓存更新会有什么影响 我注意到在运行 Eclipse Neon 的机
  • 从 Python 调试 C 库 (ctypes)

    我有一个使用 ctypes 和 C 共享库 dll 文件 的 Python 程序 作为 IDE 我使用 Eclipse 其中将开发两个项目 C 共享库和使用它的 python 程序 我的想法是 当我在调试模式下启动Python程序时 我可以
  • 提交项目时我应该包含 .project 和 .classpath 吗?

    当我将 Web 应用程序提交到源代码管理时 我还应该包含 project 和 classpath 文件吗 我不认为这应该有任何区别 因为使用该项目的其他用户应该具有相同的项目设置 这种问题会让人们在一场永无休止的辩论中陷入困境 你基本上有两
  • 在 Eclipse 中编译 Groovy 文件

    我的 java web 项目包含一些 Groovy 代码 但 Eclipse 无法识别 Groovy 文件 也无法从中生成任何类 我已经在 Eclipse 中安装了 Groovy 插件 在我的 Windows 机器中安装 Groovy 并设
  • Eclipse 无法识别 persistence.xml 的内容

    我在 eclipse 中收到以下错误 persistence xml 文件没有可识别的内容 我的 persistence xml 文件在我的应用程序中工作得很好 但 eclipse 一直给我这个错误 我在移动文件并使用 m2eclipse
  • 在 java 8 下使用泛型出现类型错误,但在 java 7 下则不然

    我有一段代码可以在 java 7 下编译良好 但不能在 java 8 下编译 这是一个独立的重现示例 我已经采用了显示此问题的真实代码并删除了所有实现 import java util Iterator class ASTNode
  • Eclipse Juno 指标插件

    Eclipse JUNO 版本有哪些 Eclipse 指标插件 我尝试了一些通用指标插件 但没有一个能够在 Eclipse 的 JUNO 版本中正常运行 差点忘了 我们正在使用 Java 作为编程语言 我想要诸如圈复杂度 代码行数 方法长度
  • Eclipse 如何创建一个未解决编译问题的类?

    当我尝试使用 javac 编译此类时 出现编译错误并且未创建 Test class public class Test public static void main String args int x 1L lt this cannot
  • 尝试在 Android 设备上调试我的应用程序时出现“启动错误:无法连接到远程虚拟机。连接超时”

    我尝试了网上和本网站上给出的所有可能的选项 但没有一个起作用 我正进入 状态 启动错误 无法连接到远程虚拟机 连接超时 当我尝试在移动设备上调试我的应用程序时 当我正常运行时 应用程序运行正常 没有任何问题 我现在至少已经使用过这些链接 如
  • Android Library项目使用gradle在命令行编译时无法导入另一个库项目的R类

    我的 android 项目有这样的结构 ProjectDir settings gradle MyApp depends on LibraryA and LibraryB gt build gradle gt All the other a
  • Eclipse 替换所有类中的文本?

    是否有一个命令可以将 Eclipse 项目中所有 java 文件中的一串代码替换为另一串代码 在 Visual Studio 中 有一个 在所有文件中替换 选项 我在 Eclipse 中似乎找不到该选项 Press Ctrl H or lo
  • 如何告诉 subclipse 在提交时忽略修改的文件

    我有一个受版本控制并由我修改的文件 但是我不想提交它 我希望只有我才能拥有我所做的特定更改 而其他人都将拥有该文件的原始版本 我怎样才能做到这一点 我经常遇到同样的问题 我的解决方案是与变更集 如果您使用 Mylyn 每个更改都会添加到活动
  • 无法在 Eclipse IDE 中使用 java 建立与 SQL Server 2008 的数据库连接

    我正在尝试在 Eclipse IDE 中使用 Java 代码连接到 HP Operations Manager 数据库 我能够通过 Microsoft SQL Server Management Studio 2008 成功连接 但通过代码

随机推荐

  • 如何使用 Turbo C++ 编译器在 Notepad++ 中编译和调试 C++

    我已经在notepad 中安装了NppExecute插件 我无法弄清楚在 Notepad 中编译和调试 C C 程序的下一步 系统详细信息 a Turbo C 目录 C TC b 操作系统 Windows 7 请提供有关如何设置环境变量和编
  • 用于发现窗口和按钮等对象的 HWND 的程序

    我记得几年前 我使用了一个程序 它能够显示任何 Windows 程序中的任何对象 例如窗口和按钮 的属性和 HWND 我记得 您只需将鼠标悬停在感兴趣的对象上 程序就会显示信息 有谁知道我指的是哪个程序以及在哪里可以找到它 您很可能正在使用
  • Android:在drawable xml、layer-list中,为什么item的宽度在API 19或更低版本中不起作用?

  • 将一个 css 类定位到另一个 css 类中

    您好 我在 joomla 中的一些 css 类方面遇到问题 我在一个模块中有两个 div 一个是包装类 wrapper 另一个是内容类 content 内容在包装内 我想做的是将 css 样式定位到内容类上 通常我只是将 content m
  • WCF basicHttpBinding:回复客户端失败时回滚

    我通过以下方式公开 WCF 服务basicHttpBinding对数据库执行多个操作 我想保证 如果客户端没有收到回复 数据库操作将回滚 没有任何通过 WCF 的事务流 例如 客户端调用在服务器上执行的 DoX 方法 但在完成之前客户端崩溃
  • 如何合并这 3 个 SPF txt 记录

    我有 3 条 SPF 记录 v spf1 include spf protection outlook com all v spf1 a ptr include authsmtp com all v spf1 a mx include sp
  • 插件架构中的 DI (Autofac):每个插件一个单独的 DI 容器可以吗?

    我正在尝试介绍 DI 与Autofac http code google com p autofac 到现有的 Windows 窗体应用程序中 该应用程序具有基本的插件架构 其中每个插件都显示自己的表单 启动时 应用程序会扫描已注册的程序集
  • 子ViewController调整containerView的大小

    My app hierarchy looks something like this 主视图控制器 我们称之为控制器 1 包含一个滚动视图 一个图像和一个指向另一个视图控制器并将数据传递到表视图的容器视图 控制器 1 滚动视图设置为在约束下
  • PHP中的@是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 php中 符号有什么用 https stackoverflow com questions 1032161 what is the use of symbol in php 我想知道php代码中 的用
  • Phonegap应用程序错误处理,提交日志到服务器

    我正在开发一个 Phonegap 应用程序 所以我想有没有一种好方法可以以某种方式将应用程序崩溃报告 主要是 javascript 的 console logs 提交到服务器 或者我是否必须手动执行此操作并将其记录到文本文件并提交 您可以使
  • 为什么 Gather() 不使用键变量名?

    虽然很丢脸 但我还是无法完全集中注意力tidyr 具体来说gather 我觉得我错过了一些基本的东西 如果我运行这段小代码 library tidyr x lt data frame var1 letters 1 3 var2 LETTER
  • 如何通过 Python/Boto3 添加 DynamoDB 全局二级索引

    是否可以在创建现有 DynamoDB 表后添加全局二级索引 我将 Python 3 x 与 Boto3 一起使用 但无法找到在创建表后将它们添加到表中的任何示例 一般来说 是的 可以添加全局二级索引 GSI 创建表后 然而 更改可能需要很长
  • 在 GAE 项目中的灵活环境模块之间共享代码

    我正在将我的 GAE flex 项目构建为多种服务 my project services service 1 service 1 yaml service 2 service 2 yaml 我现在想在服务之间共享一些代码 理想情况下 我希
  • 如何等待一系列任务并停止等待第一个异常?

    我有一系列任务 我正在等待它们Task WhenAll https learn microsoft com en us dotnet api system threading tasks task whenall 我的任务经常失败 在这种情
  • 在 Ubuntu 中自动安装基于包的 Perl 模块

    我想安装特定 Perl 脚本所需的 Perl 模块 例如perl depends工具 不过 我想在 Ubuntu 中使用apt get 意味着通过包存储库而不是通过 CPAN 安装模块 最相似的问题 例如this one https sta
  • Rails 中的全文 mysql 搜索

    我正在尝试将一个简单的 mysql 全文搜索添加到一个 请不要告诉我安装 solr 或任何其他搜索宝石 我尝试运行它们 这似乎是一个又一个问题 有一天我会抽出时间来做这件事 但那一天不是今天 我需要添加 add index 迁移 但是当我运
  • Visual Studio 2008 Express 无法识别我的 Sql Server 2008 Express

    我最近安装的顺序是 SQL Server 2008 Express 可视化 Web 开发人员速成 2008 当我右键单击 app data 并尝试添加数据库时 它返回 与 SQL Server 文件 mdf 的连接需要 SQL Server
  • 有没有办法在原生 CommonJS 环境中使用 JSX?

    我正在一个具有本机的环境中启动一个新项目CommonJS支持require模块 这是一个atom shell项目 不可能使用预编译步骤 例如在Browserify或webpack AFAIK中 我可以在我的设备上使用 JSXapp jsx在
  • JSON-WSP 或 JSON-RPC [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 Eclipse 与大型工作区结合使用

    我们当前的产品基于 Eclipse RCP 当我们尝试将整个代码库放在一个 Eclipse 工作区中并且我们想知道其他人在做什么时 我们开始遇到问题 这是我们的设置 225 个 eclipse 项目 全部在 trunk project 中