【问题标题】:How to work efficiently with large Maven-project workspace in Eclipse?如何在 Eclipse 中高效地使用大型 Maven 项目工作区?
【发布时间】:2014-01-31 17:48:33
【问题描述】:

我正在开发一个基于 Maven 的大型多模块系统,其中包含大约 20 个子模块和少量项目外部依赖项,这些依赖项也是我的 Eclipse 工作区中的 Maven 项目。总而言之,Eclipse 工作区中有大约 30 个项目。

这些项目都是用m2e导入的maven项目,我们使用Subversion(带有Subversive插件)进行源代码控制。 Eclipse 是最近更新的 Kepler。

我的工作站功能强大,配备 4 核 Intel i7 CPU、16 Gb RAM 和固态磁盘。

问题在于 Eclipse 的速度非常慢:

  1. 团队同步和冲突解决。每次我解决冲突 和“标记为合并”,我必须等待 10-30 秒让 Eclipse 刷新工作区等。更不用说冲突模式树了 视图然后完全清除,所以我必须选择传出模式 冲突模式再次重新填充。两次 - 因为当我清除 保存已解析的源文件,然后在我标记为已合并时再次保存。

  2. 建筑。我使用 Maven 启动配置来进行 Maven 构建。但 出于某种原因,进行 Maven 构建对于 Eclipse 来说是不够的 - 然后它必须自己构建整个工作空间,这 当 Eclipse 决定挂起时,至少需要同样长的时间,甚至更长的时间 几分钟关于“清除项目 xxx 的输出文件夹”,对于 几个项目。

所有这一切的结果是,从源代码控制更新、解决冲突、构建并准备好运行或继续开发通常需要一个多小时。

我和我的同事经常觉得 Eclipse 阻碍了开发,而实际上应该增强它。

有什么办法可以减少永恒的等待日食综合症吗?

【问题讨论】:

  • 如果关闭 Eclipse 的“自动构建”会发生什么?
  • 这样做了,但是 Eclipse-build 仍然必须手动完成,以使 Eclipse 了解更改。在 Maven 构建之后,Eclipse 不知道错误已经解决等。
  • m2e 的全部意义在于您不需要手动构建 maven,ctrl-b 应该构建您需要的所有内容,并且正常的“运行”或“部署”机制应该“正常工作” " - 日食方式。

标签: java eclipse performance maven multi-module


【解决方案1】:

我们也有同样的问题....我们工作区中的 72 个项目通常无法使用 m2e。我们试图不使用 m2e 并启动 maven 可执行文件作为具有某些配置的外部工具。你可以让 maven 生成你的 .project 和 .classpath 来改变 eclipse 的配置:

mvn eclipse:eclipse

不是最好的选择,但就是我们现在拥有的。

【讨论】:

  • 你认为 mvn eclipse:eclipse 比 m2e 更好用吗?
  • 在一个有 70 个项目的 Eclipse 工作区上,我认为它工作得更好。 eclipse 和 maven 阶段不会相互混淆,我可以在需要时“运行”maven 阶段。
  • 是的,这里有 100 个模块的项目,eclipse:eclipse 工作正常,m2e 无法使用
  • 328 个模块 - 打败它!我真的在为解决方案而哭泣。 (是的,减少模块的数量就是其中之一……我们已经在努力了!)
【解决方案2】:

我建议的一些好技巧是:

  1. 开始导入大型项目之前,请转到项目并取消选中自动构建
  2. 可以在最小的子组件中导入项目。如果项目是 Mavenized,这意味着每次都选择树中最底层的 pom.xml 进行导入,而不是导入大型父 POM 及其所有子项目。
  3. 当您不处理(如修改)特定项目的源代码时,通过右键单击并转到关闭项目来关闭它。这将释放资源供 Eclipse 在其他地方使用。如果你仍然需要在不修改的情况下查看源代码(用于调试),你可以根据需要添加source containers
  4. 为不同的项目使用不同的工作区。最终,拥有 2 个可运行且快速的 Eclipse 版本比拥有一个非常慢的版本要快

如果你不能拆分项目,你也可以尝试给 Eclipse 更多的内存,并确保你使用的是 JVM 8,例如

-Dosgi.requiredJavaVersion=1.8 -Xms512m -Xmx2g

听起来您只是在处理对于大多数 IDE 来说都太大的东西,但事实可能并非如此。如果一切都失败了,为什么不试试IntelliJ 看看它是否更适合你?

【讨论】:

  • 虽然这些技巧很不错,但它们并不能帮助您使用支持 m2e 且子项目为三位数的项目...
【解决方案3】:

伙计们,我遇到了同样的问题,但是您可以正确分析这些应用程序的设计,而不是使用 IDE 进行蛮力构建吗?我说的是因为有些应用程序不必完全构建,您可以单独部署它并在模块中分析它。大多数时候,没有理由将成千上万个类放在一起,构建它并将其保持在一起......像 Eclipse 这样的 IDE 不是为此类任务而设计的,而是为本地开发而设计的,服务器进行集成构建,不是工作站。 可能您的设计或持续构建的理念有些误解。

Cya。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2017-05-16
    • 2011-07-10
    相关资源
    最近更新 更多