150

我已经看到、阅读和思考过使用 Workspaces 的不同方式(每个项目、每个应用程序(是否拥有多资产)、每个程序语言、每个目标(Web 开发、插件等)等等),我我仍然怀疑最好的方法是什么。

任何人都可以对此进行详细但不是一页长的见解吗?

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

  • 做什么的?
  • Eclipse 开发团队希望它用于什么?
    • 其他/大多数人怎么想?
    • 你怎么看?
    • ... ?
  • 为什么?
  • 是否存在配置冲突与共享优点?
  • 任何文件空间原因?
  • 表现?
  • ... ?

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

编辑 2012-11-27:不要误会我的意思。我不怀疑 Workspaces 的使用,我只想按原样使用它,或者如果有人认为它更好的话。所以“为了什么?” 意思是:最好的用途是什么?“为什么?” 实际上是针对“为什么?”,换句话说:告诉我你回答的原因。

4

5 回答 5

47

我将向您提供我对 Java 世界感到非常不舒服的人的看法,我认为这也是您的情况。

这是什么

工作区是组合在一起的概念:

  1. 一组(不知何故)相关的项目
  2. 与所有这些项目有关的一些配置
  3. Eclipse 本身的一些设置

这是通过创建一个目录并将其放入(您不必这样做,它为您完成)文件来实现的,这些文件设法告诉 Eclipse 这些信息。您所要做的就是选择将放置这些文件的文件夹。而且这个文件夹不需要和你放置源代码的地方一样——最好不会。

探索上面的每个项目:

  1. 一组(不知何故)相关的项目

Eclipse 似乎总是与特定的工作区关联打开,即,如果您在工作区 A中并决定切换到工作区 B(文件 > 切换工作区),Eclipse 将自行关闭并重新打开。与工作区 A关联的所有项目(并出现在项目资源管理器中)将不再出现,与工作区 B关联的项目现在将出现。因此,要在 Eclipse 中打开的项目似乎必须与工作区相关联。

请注意,这并不意味着项目源代码必须在工作区中。不知何故,工作区将与磁盘中项目的物理路径有关(有人知道怎么做吗?我在工作区内部查看了一些指向项目路径的文件,但没有成功)。

这样,一个项目一次可以位于多个工作区中。因此,将工作空间和源代码分开似乎很好。

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

我听说一些东西,比如 Java 编译器版本(比如 1.7,例如 - 我不知道“版本”是否是这里的词),是工作区级别的配置。如果您的工作空间中有多个项目,并在 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

于 2014-12-23T20:47:24.140 回答
38

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

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

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

于 2012-11-26T04:32:19.957 回答
3

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

第一点(也是主要的)是它自己的eclipse,它与设置和元数据配置(插件ctr)有关。每次创建项目时,eclipse 都会收集所有配置并将它们存储在该工作区中,如果以某种方式在同一个工作区中存在冲突项目,您可能会失去 eclipse 自身的某些功能甚至稳定性。

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

就个人而言,我发现自己在涉及与使用插件的当前状态所带来的已知问题相关的单独工作区时更倾向于语言区别。最好我将它们保持在最低数量,因为当项目变得...很多时,这会导致更少的挫败感,而且版本控制不是您保留项目的唯一版本。最后,如果由于存在不相关的项目而加载了大量(不必要的)插件,加载速度和性能可能会出现问题。底线;没有一个解决方案可以解决每个问题,也没有解决问题的大师蓝图。这是随着经验而增长的东西,但少即是多!

于 2013-12-31T17:03:22.213 回答
1

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

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

同样,我希望 Eclipse 工作区可以容纳我相关的 makefile 项目 (Eclipse),并带有一个主项目,其依赖项将各种唯一的 makefile 项目编译为构建其“解决方案”的先决条件。(我的文件夹结构将如@Rafael 所述)。

所以我希望使用 Workspaces 的一个好方法是模拟 Visual Studio 将不同项目组合成解决方案的能力。

于 2018-10-29T22:05:15.577 回答
0

它只是用于构建项目的功能。显然,Eclipse 设计人员试图避免对 Eclipse 进行全局设置,并决定将它们放入工作区。每个 Eclipse 应用程序都依赖于每个工作区设置。这是一个好的决定吗?我认为并非如此。它缺乏灵活性。期望可以避免全局设置是天真的。它不允许您拥有单个项目(这对 Eclipse 设计人员来说可能是一个惊喜,但它经常发生)。但它仍然有效。许多人使用它。有时他们会受苦,但更多时候一切都很好。

于 2022-01-18T20:20:41.153 回答