Eclipse 工作区:为啥?
Posted
技术标签:
【中文标题】Eclipse 工作区:为啥?【英文标题】:Eclipse Workspaces: What for and why?Eclipse 工作区:为什么? 【发布时间】:2012-11-25 15:07:58 【问题描述】:我已经看到、阅读和思考过使用 Workspace 的不同方式(每个项目、每个应用程序(是否具有多资产)、每个程序语言、每个目标(Web 开发、插件等)等等) 我仍然怀疑最好的方法是什么。
谁能给出详细的,但不是一页长的洞察力?
这涉及很多子问题,可以这么说,我不知道我应该问的所有具体子问题,因为我确信我不了解 Eclipse(和工作区)的所有方面,但我会尝试举一个我正在寻找的例子:
为了什么? Eclipse 开发团队希望它用于什么? 其他/大多数人怎么想? 你怎么看? ... ? 为什么? 是否存在配置冲突与共享优点? 任何文件空间原因? 性能? ... ?我说的是使用不同语言和协议的开发人员的最低用例,不一定在一个项目中必须全部使用(例如,对于某些项目,php、javascript 和 XML,对于 C#其他,Java 和 SQL 用于其他等等。)
编辑 2012-11-27:不要误会我的意思。我不怀疑使用 工作区,我只想按原样使用它,或者如果 任何人都会认为它更好。所以“为了什么?”意思是:最好的用途是什么?和 “为什么?”实际上是针对“为什么?”,换句话说:告诉我原因 为您解答。
【问题讨论】:
我还是不明白。对于已经知道 what for 的人来说,这显然只是有意义,而且他们很难理解这对其他人来说并不明显。 我也不明白,我不同意以下所有内容*,也不完整(没有参考资料)。为什么我还没有接受答案。 * 当然,这不是意见或个人实践。那,我明白了。 【参考方案1】:我将为您提供我对 Java 世界感到非常不舒服的人的看法,我认为您也是这种情况。
它是什么
工作区是一个组合在一起的概念:
-
一组(不知何故)相关的项目
与所有这些项目有关的一些配置
Eclipse 本身的一些设置
这是通过创建一个目录并将其放入(您不必这样做,它为您完成)文件来实现的,这些文件设法告诉 Eclipse 这些信息。您所要做的就是选择将放置这些文件的文件夹。而且这个文件夹不需要和你放置源代码的地方一样——最好不会。
探索上面的每个项目:
一组(不知何故)相关的项目
Eclipse 似乎总是与特定工作区关联打开,即,如果您在 工作区 A 并决定切换到 工作区 B(文件 > 切换工作区),Eclipse 将自行关闭并重新打开。与 workspace A 关联的所有项目(并出现在 Project Explorer 中)将不再出现,而与 workspace B 关联的项目现在将出现。因此,要在 Eclipse 中打开的项目似乎必须与工作区相关联。
请注意,这并不意味着项目源代码必须位于工作区中。不知何故,工作区与磁盘中项目的物理路径有关系(有人知道怎么做吗?我在工作区内部搜索了一些指向项目路径的文件,但没有成功)。
这样,一个项目一次可以位于多个工作区中。因此,将工作区和源代码分开似乎很好。
与所有这些项目有关的一些配置
我听说像 Java 编译器版本(例如 1.7,例如 - 我不知道这里是否使用“版本”这个词)之类的东西是工作区级别的配置。如果您的工作区中有多个项目,并在 Eclipse 中编译它们,那么它们都将使用相同的 Java 编译器进行编译。
Eclipse 本身的一些设置
您的键绑定之类的某些内容也存储在工作区级别。因此,如果您定义 ctrl+tab 将以智能方式切换选项卡(而不是堆叠它们),则这只绑定到您当前的工作区。如果您想在另一个工作区中使用相同的键绑定(我认为您想要!),您似乎必须在工作区之间导出/导入它们(如果这是真的,这个 IDE 是在一些非常奇怪的前提下构建的)。 Here is a link on this.
似乎工作空间在不同的 Eclipse 版本之间也不一定兼容。 This article 建议您将工作空间命名为包含 Eclipse 版本的名称。
而且,更重要的是,一旦您选择了一个文件夹作为您的工作区,请不要触摸其中的任何文件,否则您会遇到麻烦。
我认为如何使用它的好方法
(实际上,当我在写这篇文章时,我不知道如何以一种好的方式使用它,这就是为什么我一直在寻找答案——我试图在这里组装)
为您的项目创建一个文件夹:/projects
为每个项目创建一个文件夹并将项目的子项目分组在其中:/projects/proj1/subproj1_1
/projects/proj1/subproj1_2
/projects/proj2/subproj2_1
为您的工作区创建一个单独的文件夹:/eclipse-workspaces
为您的项目创建工作区:/eclipse-workspaces/proj1
/eclipse-workspaces/proj2
【讨论】:
我承认最后一部分需要澄清一下。如果不是项目本身,什么是子项目?这些子项目如何在不使用整个父项目的情况下弥补跨不同工作空间的使用?我首先需要找出它来改进答案。 这个答案确实有助于整个问题。但是,它有点侧重于文件夹,并且还遗漏了一些参考资料和论点。尽管如此,它的信息量很大。叹息,这些答案变得越来越困难,因为它们都做出了贡献,我开始认为我永远无法接受一个答案。我希望这里没有人是一个点怪胎,我们会在没有接受答案的情况下留下它吗? 我来自“MS 端”解决方案/项目列表。而已。没什么好解释的。一切正常。打开解决方案,非常简单:打开/解决方案。而已。没什么好解释的,一切正常。但是 Eclipse 中这种奇怪的方法让我发疯了。通常我从事由一些子项目(UI-Layer、Domain-Layer、Test projects/Unit-Tests)组成的项目。在我看来,为这样的项目拥有一个工作空间是有意义的(与您的类似,但我不理解第 4 项 ... ;-)) 第 4 项是为了表明不同的项目会有一个单独的工作区。项目 1 有几个子项目,项目 2 也有。项目 1 和项目 2 各有一个单独的工作区。【参考方案2】:工作区的全部意义在于将一组相关的项目组合在一起,这些项目通常构成一个应用程序。工作区框架归结为eclipse.core.resources
插件,它在设计上自然是有意义的。
项目具有性质,构建器附加到特定项目,并且当您更改一个项目中的资源时,您可以在同一工作区中的项目中实时看到编译或其他问题。因此,我建议的策略是为您从事的不同项目设置不同的工作区,但在 Eclipse 中没有工作区,就不会有项目和配置集合的概念,毕竟它是一个 IDE 工具。
如果这没有意义,请问 Net Beans 或 Visual Studio 如何解决这个问题?这是同一个主题。 Maven 就是一个很好的例子,将一组相关的 maven 项目签出到一个工作空间中可以让您实时开发和查看错误。如果不是工作空间,您还有什么建议? RCP 应用程序可以是不同的野兽,具体取决于它的用途,但在真正的 IDE 意义上,我不知道什么是比工作区或项目上下文更好的解决方案。只是我的想法。 - 邓肯
【讨论】:
但是感谢您的回答。这是有道理的,至少我知道它是怎么回事。您能否详细介绍一下您的第一句话,并可能提供一个链接(指向 eclipse)? 我不同意“工作区的意义在于将一组相关的项目组合在一起,这些项目通常构成一个应用程序”。假设我正在开发两个应用程序,我应该有两个工作区吗?多么烦人!所有自定义透视图、键绑定、自动文本和其他首选项都与工作区相关联。每次我开始一个新的应用程序时,我都必须重新创建它们!在我看来,你应该有两个工作区:开发和最新发布。在工作区中,您为每个应用程序创建一个工作集。这就是工作区和工作集的用途。 John,如果您的工作区中有两个应用程序是 RCP 应用程序,并且每个应用程序都需要不同的目标平台或不同的 Java 编译器合规级别,您会怎么做除非您的应用程序需要完全相同将两个应用程序放在一个工作区中的运行时配置会导致问题。我了解您喜欢使用一组共同的首选项,这就是为什么有首选项导出/导入功能,以便您可以设置新工作区并导入您的组织或个人首选项和其他设置。 有趣的点@JohnHenckel!虽然我在工作集上遇到了麻烦。似乎它们仅适用于 eclipse 的某些功能,尽管我猜您都可以手动设置它们(就像我昨天使用任务视图所做的那样,它为我提供了所有项目的所有任务)。你也可以为库函数、自动完成、现有方法等做到这一点吗?我对您如何使用工作集更感兴趣。 @DuncanKrebs,我不知道首选项的导入/导出功能。谢谢!这确实解决了很多如何使用工作空间的问题。谢谢,你们俩。不要停下来提出论点/见解! 我刚搬到 Eclipse。以前我一直在使用这种新颖的操作系统概念,称为“文件夹”。文件夹是我放置项目的文件系统上的一个位置。它可以从那里有子文件夹。您甚至可以将多个相关项目的文件夹放在一个父文件夹中。那么,如果没有 Eclipse,我该怎么办?我会使用一个文件夹、一个基本的文本编辑器,然后从命令行编译和运行。因此,您的回答似乎期望我们都应该知道“工作区”有多么有用,但也许您应该熟悉“文件夹”。【参考方案3】:基本上工作空间的范围分为两点。
第一点(也是主要的)是它自己的eclipse,它与设置和元数据配置(插件ctr)相关。每次创建项目时,eclipse 都会收集所有配置并将它们存储在该工作区中,如果以某种方式在同一个工作区中存在冲突项目,您可能会失去 eclipse 自身的某些功能甚至稳定性。
第二个(次要)可以采用的发展战略点。 一旦满足(并掌握了)主要范围并且需要对项目关系(如库、透视 ctr)进行进一步调整,然后根据开发习惯或可能的语言/框架“行为”启动单独的工作区可能是合适的。 例如,DLTK 是一头野兽,应该被关在一个单独的笼子里。 论坛上有很多抱怨它停止工作(正常或根本不工作),建议的解决方案是从当前工作区清除等效插件的设置。
就个人而言,当涉及到与使用插件的当前状态所带来的已知问题相关的单独工作区时,我发现自己更倾向于语言区别。最好我将它们保持在最低数量,因为当项目变得...很多时,这会导致更少的挫败感,而且版本控制不是您保留项目的唯一版本。 最后,如果由于存在不相关的项目而加载了大量(不必要的)插件,加载速度和性能可能会出现问题。 底线;没有一个解决方案可以解决每个问题,也没有解决问题的大师蓝图。这是随着经验而成长的东西, 少即是多!
【讨论】:
DTLK 是什么意思? 当您放弃文本编辑器转而使用 IDE 时,最初的驱动力是自动完成和查看库(和文档)的便利性,至少可以避免语法错误。在任何情况下,您都不会危及此功能。【参考方案4】:虽然我已经使用 Eclipse 多年,但这个“答案”只是猜测(我今晚将尝试)。如果它被否决了,那么显然我错了。
Oracle 依靠 CMake 为其 mysql 连接器 C 源代码生成 Visual Studio“解决方案”。解决方案中包含可以单独或集体(由解决方案)编译的“项目”。每个项目都有自己的 makefile,使用与其他项目不同的设置来编译解决方案的一部分。
同样,我希望 Eclipse 工作区可以容纳我相关的 makefile 项目 (Eclipse),以及一个主项目,其依赖项编译各种独特的 makefile 项目作为构建其“解决方案”的先决条件。 (我的文件夹结构将如@Rafael 所述)。
所以我希望使用 Workspaces 的一种好方法是模拟 Visual Studio 将不同项目组合成解决方案的能力。
【讨论】:
【参考方案5】:这只是构建项目的一个功能。 显然 Eclipse 设计者试图避免对 Eclipse 进行全局设置,并决定将它们放入工作区。 每个 Eclipse 应用程序都依赖于每个工作区设置。 这是一个好的决定吗?我认为并非如此。 它缺乏灵活性。期望可以避免全局设置是天真的。 它不允许您拥有单个项目(这对 Eclipse 设计人员来说可能是一个惊喜,但它经常发生)。 但它仍然有效。 许多人使用它。有时他们会受苦,但更多时候一切都很好。
【讨论】:
以上是关于Eclipse 工作区:为啥?的主要内容,如果未能解决你的问题,请参考以下文章