Eclipse 工作区: 用于什么以及为什么?

我已经看到,阅读和思考了使用工作区的不同方法(每个项目,每个应用程序(多资产与否) ,每个程序语言,每个目标(网络开发,插件,。.)等等) ,我仍然怀疑什么是最好的方法。

有人能给出一个详细的,但不是一页长的洞察力吗?

可以说,这涉及到很多子问题,我不知道我应该问的所有具体的子问题,因为我确信我不知道 Eclipse (和工作区)的所有方面,但我会试着给出一个例子来说明我在寻找什么:

  • 为什么?
  • Eclipse 开发团队希望它用来做什么?
    • 其他人/大多数人是怎么想的?
    • 你觉得怎么样?
    • ... ?
  • 为什么?
  • 是否存在配置冲突和共享优点?
  • 有什么文件空间的原因吗?
  • 表演?
  • ... ?

我说的是一个使用不同语言和协议的开发人员的最小用例,没有必须在一个项目中使用所有这些语言和协议(例如,有些项目使用 Php、 Javascript 和 XML,有些项目使用 C # ,还有些项目使用 Java 和 SQL,等等)

编辑2012-11-27: 不要误会我。我不怀疑使用 工作区,我只是想使用它,因为它的意思是或否则,如果 任何人都会认为它更好。所以“为什么?”的意思是: 什么是最好的用途? 和 “为什么?”实际上是针对“为什么?”,换句话说: 告诉我原因 你的回答。

111834 次浏览

工作区的全部意义在于将一组通常组成应用程序的相关项目组合在一起。工作空间框架归结为 eclipse.core.resources插件,通过设计它自然是有意义的。

项目具有自然属性,构建器附加到特定的项目,并且当您更改一个项目中的资源时,您可以在同一工作区中的项目中看到实时编译或其他问题。因此,我建议的策略是,为您所从事的不同项目提供不同的工作空间,但是如果没有 Eclipse 中的工作空间,就不会有项目和配置集合的概念,毕竟它是一个 IDE 工具。

如果这没有意义,请问 NetBeans 或 VisualStudio 如何解决这个问题?同样的主题。Maven 是一个很好的例子,将一组相关的 Maven 项目签出到一个工作区中可以让您实时开发和查看错误。如果不是一个工作空间,你还有什么建议?RCP 应用程序可能是一个不同的野兽,这取决于它用于什么,但在真正的 IDE 意义上,我不知道有什么比工作区或项目上下文更好的解决方案。只是我的想法。邓肯

工作空间的范围基本上分为两点。

第一点(也是主要的)是 eclipseitself,它与设置和元数据配置(pluginctr)相关。每次创建项目时,eclipse 都会收集所有配置并将它们存储在该工作区中,如果在同一工作区中出现了冲突项目,那么您可能会失去一些功能,甚至影响 Eclipse 本身的稳定性。

第二(次)点的发展战略可以采取。 一旦主要范围得到满足(和掌握) ,并且需要进一步调整项目关系(如库、透视图 ctr) ,那么根据开发习惯或可能的语言/框架“行为”,启动单独的工作空间可能是合适的。 例如,DLTK 是一个应该包含在单独的笼子中的野兽。 论坛上有很多抱怨它停止工作(正常或根本不工作) ,建议的解决方案是清除当前工作区中相应插件的设置。

就我个人而言,我发现自己更倾向于语言区分,当涉及到与使用插件的当前状态相关的已知问题时。最好我把它们保持在最小的数量,因为这样可以减少当项目变得... 丰富和版本控制不是您保持您的项目的唯一版本时的挫折感。 最后,加载速度和性能是一个问题,可能会出现如果大量(不必要的)插件加载,由于提出了不相关的项目。 总之,没有一个解决方案可以解决所有问题,也没有解决问题的主蓝图。随着经验的增长, 少即是多!

我会给你们提供一个在 Java 世界感到非常不舒服的人的视角,我想这也是你们的情况。

这是什么

工作空间是一种组合的概念:

  1. 一系列(以某种方式)相关的项目
  2. 与所有这些项目有关的一些配置
  3. Eclipse 本身的一些设置

通过创建一个目录并将这些信息放入其中(您不必这样做,这是为您准备的) ,可以实现这一点。您所要做的就是显式地选择放置这些文件的文件夹。并且这个文件夹不需要与放置源代码的地方相同——最好不要相同。

探索以上各项:

  1. 一系列(以某种方式)相关的项目

Eclipse 似乎总是与特定的工作区相关联地打开,也就是说,如果您处于 工作空间 A中并决定切换到 工作区 B(File > Switch Workspace) ,Eclipse 将关闭自身并重新打开。所有与 工作空间 A相关联的项目(出现在项目浏览器中)将不再出现,与 工作区 B相关联的项目现在将出现。因此,在 Eclipse 中打开的一个项目 必须的似乎与一个工作区相关联。

注意,这并不意味着项目源代码必须在工作区内。工作区将以某种方式与磁盘中项目的物理路径相关联(有人知道如何关联吗?)?我在工作区内部搜索了一些指向项目路径的文件,但是没有找到)。

这样,一个项目可以同时在多个工作区中。因此,将工作区和源代码分开似乎是一件好事。

  1. 与所有这些项目有关的一些配置

我听说有些东西,比如 Java 编译器版本(比如1.7,例如——我不知道这里是否用了“ version”这个词) ,是工作空间级别的配置。如果您的工作区中有多个项目,并在 Eclipse 中编译它们,那么所有这些项目都将使用相同的 Java 编译器进行编译。

  1. Eclipse 本身的一些设置

有些东西,比如密钥绑定,也存储在工作区级别。因此,如果您定义 ctrl + tab 将以一种智能的方式切换选项卡(而不是堆叠它们) ,那么这将只绑定到您当前的工作区。如果您希望在另一个工作区中使用相同的密钥绑定(我认为您希望如此!),似乎您必须在工作区之间导出/导入它们(如果这是真的,那么这个 IDE 是在一些非常奇怪的前提下构建的)。这里有一个链接.

似乎不同的 Eclipse 版本之间的工作区不一定是兼容的。这篇文章建议您为包含 Eclipse 版本名称的工作区命名。

更重要的是,一旦你选择了一个文件夹作为你的工作空间,不要碰里面的任何文件,否则你就有麻烦了。

我认为是一个好的方式来使用它

(事实上,在我写这篇文章的时候,我不知道如何正确地使用它,这就是为什么我一直在寻找一个答案——我试图在这里整合)

  1. 为项目创建一个文件夹:
    /projects

  2. 为每个项目创建一个文件夹,并在其中分组项目的子项目:
    /projects/proj1/subproj1_1
    /projects/proj1/subproj1_2
    /projects/proj2/subproj2_1

  3. 为您的工作区创建一个单独的文件夹:
    /eclipse-workspaces

  4. 为项目创建工作区:
    /eclipse-workspaces/proj1
    /eclipse-workspaces/proj2

虽然我已经使用 Eclipse 很多年了,但这个“答案”只是猜测(今晚我将尝试使用)。如果它被投票否决,那显然我错了。

Oracle 依靠 CMake 为其 MySQL 连接器 C 源代码生成 VisualStudio“解决方案”。解决方案中包含可以单独或集体(由解决方案)编译的“项目”。每个项目都有自己的生成文件,使用与其他项目不同的设置编译其解决方案部分。

类似地,我希望 Eclipse 工作区可以保存我的相关 makefile Projects (Eclipse) ,以及一个主项目,它的依赖项编译各种惟一 makefile Projects 作为构建其“解决方案”的先决条件。(我的文件夹结构应该是@Rafael 描述的)。

因此,我希望使用工作区的一个好方法是模拟 VisualStudio 将 不一样项目组合成解决方案的能力。

它只是构建项目的一个特性。 显然,Eclipse 设计人员试图避免为 Eclipse 提供全局设置,并决定将它们放到工作区中。 每个 Eclipse 应用程序都依赖于每个工作区设置。 这是个好决定吗? 我觉得不是。 它缺乏灵活性,期望可以避免全局设置是天真的。 它不允许您拥有单个项目(这可能会让 Eclipse 设计人员感到惊讶,但这种情况经常发生)。 但它仍然有效。 许多人使用它。有时他们受苦,但更频繁的一切都是好的。