Eclipse工作区:什么和为什么?

我已经看到,阅读并思考了使用工作空间的不同方式(每个项目,每个应用程序(多重或不是多less),每个程序语言,每个目标(web开发,插件,等等)和我我仍然怀疑最好的办法是什么。

反正可以给一个详细的,但不是长时间的洞察这个?

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

  • 做什么的?
    • eclipse开发意味着它被用于什么?
    • 其他人/大多数人认为什么?
    • 你怎么看?
    • …?
  • 为什么?
    • 是否存在configuration冲突与共享的优点?
    • 任何文件空间的原因?
    • 性能?
    • …?

呵呵,我讲的是使用不同语言和协议的开发人员的最小用例,不一定全部在一个项目中(例如php,javascript和xml用于某些项目,C#用于其他,java和SQL等等别人等)。

编辑2012-11-27:不要误会我的意思。 我不怀疑工作区的使用,我只是想用它作为它的意思,否则如果有人会认为它更好。 那么“为了什么?” 意思是:最好用的是什么? 而“为什么?” 实际上的目标是“为了什么?”,换句话说:告诉我你的答案的原因。

整个工作空间的重点在于将一组相关的项目组合在一起,通常组成一个应用程序。 工作区框架归结到eclipse.core.resources插件,它自然地由devise是有道理的。

项目具有性质,build造者被附加到特定的项目,当你改变一个项目中的资源,你可以实时看到编译或在同一个工作空间的项目中的其他问题。 所以我build议的策略是针对不同的项目使用不同的工作空间,但是如果在eclipse中没有工作空间,则不会有任何项目和configuration集合的概念,毕竟它是一个IDE工具。

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

我会给你提供一个在Java世界里感觉很不舒服的人的观点,我认为这也是你的情况。

这是什么

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

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

这是通过创build一个目录并将其放入(不必这样做,这是为你完成的)文件来设置的,它告诉Eclipse这些信息。 所有你需要明确的是select放置这些文件的文件夹。 而且这个文件夹不需要和你放置源代码的地方一样 – 优先不会。

探索上面的每个项目:

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

Eclipse似乎总是与特定的工作空间相关联地打开,也就是说,如果您在工作空间A中并决定切换到工作空间B (文件>切换工作空间),则Eclipse将自行closures并重新打开。 所有与工作空间A相关的项目(在项目资源pipe理器中出现)都不会再出现,并且与工作空间B相关的项目现在将出现。 所以在Eclipse中打开的项目似乎必须关联到工作区。

注意,这并不意味着项目源代码必须在工作区内。 工作区在某种程度上与磁盘中项目的物理path有关(任何人都知道如何操作?我已经在工作区内search指向项目path的文件,但没有成功)。

这样一个项目一次可以在一个以上的工作区内。 所以保持工作空间和源代码分离似乎很好。

  1. 有关所有这些项目的一些configuration

我听说有些东西,比如Java编译器版本(比如1.7,例如 – 我不知道“版本”是否在这里)是一个工作区级的configuration。 如果您的工作区中有多个项目,并在Eclipse中进行编译,则所有这些项目都将使用相同的Java编译器进行编译。

  1. Eclipse本身的一些设置

有些东西,如你的键绑定,也存储在工作区级。 所以,如果你定义ctrl + tab会以一种聪明的方式切换选项卡(不是堆叠它们),这只会绑定到你当前的工作区。 如果你想在另一个工作区使用相同的键绑定(我想你想要!),似乎你必须在工作区之间导出/导入它们(如果这是真的,这个IDE是build立在一些非常奇怪的前提下)。 这里是一个链接 。

似乎工作空间在不同的Eclipse版本之间不一定是兼容的。 本文build议您为包含Eclipse版本名称的工作空间命名。

而且,更重要的是,一旦你select一个文件夹作为你的工作空间,不要触摸里面的任何文件,或者你有一些麻烦。

我的想法是使用它的好方法

(实际上,正如我正在写这篇文章,我不知道如何以一种好的方式来使用它,这就是为什么我正在寻找一个答案 – 我试图在这里集合)

  1. 为您的项目创build一个文件夹:
    /projects

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

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

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

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

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

而次要的(次要的)发展战略则可以采用。 一旦主要范围得到满足(掌握),需要对项目关系进行进一步调整(如图书馆,视angularctr),那么基于发展习惯或可能的语言/框架“行为”启动单独的工作空间是合适的。 例如DLTK是一个应该包含在一个单独的笼子里的野兽。 在论坛上的许多抱怨停止工作(正确或根本没有),build议的解决scheme是清除当前工作区的等效插件的设置。

就我个人而言,当涉及到分离工作空间的时候,我发现自己更倾向于语言区分,这些工作空间与使用当前插件状态的已知问题相关。 最好我把他们保持在最低限度的数量,因为这是当项目变得越来越less挫折,并且版本控制不是你保持你的项目的唯一版本。 最后,加载速度和性能是一个可能出现的问题,如果大量(不必要的)插件由于提交不相关的项目而被加载。 底线; 没有一个解决scheme,没有一个主要的蓝图解决了这个问题。 这是随着经验而增长的东西,less即是多!