【问题标题】:Eclipse workspace vs. regular directoryEclipse 工作区与常规目录
【发布时间】:2017-09-07 08:23:51
【问题描述】:

注意:我不认为这是任何问题的重复。我对此进行了很多研究(几个小时,可能阅读了整个谷歌关于工作空间的信息 - 这当然是一个比喻)但找不到我的问题的答案。


所以我使用 Java 进行了一些编程,主要使用 Eclipse(当项目变得更加复杂时,在我使用 Vi 之前)。我一直在默认工作区 $HOME/eclipse-workspace 中工作,因为我从来没有真正理解工作区的意义。

我重新开始使用 Java 编程,安装了 Eclipse 并收到提示选择一个目录作为工作区,这让我可以使用 /home/campovski/eclipse-workspace。之前我只是点击Launch,但现在我开始好奇了。这些工作区是什么,它们的用途是什么……?

我做了一些研究:

我还关注了第一个链接的答案中提供的链接,但没有人回答我的问题:

目录工作区有什么区别?

正如第三个链接中所述:一个工作区可以有任意数量的项目,每个项目都可以存储在某个文件系统中的不同位置。 好的,这可能很有用,但是什么将所有项目包含在一个可以代替工作空间的父目录中是否存在问题?

如果我们以 Matlab 为例:

左侧有一个目录选择菜单,就像在 Eclipse 中一样。您所在的当前目录被选为工作目录,并且在此目录中声明的任何 Matlab 函数和脚本都可以在命令窗口中执行。 Eclipse 的类比是从不同的文件夹中导入一个函数。

所以我的问题要改写一下,除了工作空间之外,工作空间还有什么其他的东西,就像一个普通目录一样,只是一个项目、文件夹和文件的集合,除了在工作空间中可以有来自不同路径的项目。

【问题讨论】:

  • 是的,还有更多。 eclipse 创建了一些(隐藏的)文件和目录,其中包含配置信息。当然,否则它是与您的操作系统相关的目录。
  • 对于项目管理也可能很方便。例如,一个应用程序可以由多个 Java 项目构建,并且您将工作空间作为该应用程序的项目集合。但是,是的,它最终仍然是一个目录。
  • @MarkBaijens 我明白这一点。但是,我仍然可以有这样的目录结构:带有子目录 Project1、Project2、Project3 的项目,当我想制作一个完成的应用程序时,我会单击 Export to application 之类的东西,并会提示一个窗口来选择我想要包含的项目。对我来说似乎比在工作空间上创建工作空间更容易,然后当我想在不同的应用程序上工作时需要相互切换。
  • @UweAllner 当提示选择工作区时,会这样写:Eclipse 使用工作区目录来存储它的首选项和开发工件。 所以我知道。
  • @campovski 默认的 Java 编译器设置(如 Java 版本)在工作区中设置,但可以被项目特定设置覆盖(存储在项目的 .settings/org.eclipse.jdt.core.prefs 中)。项目特定设置用于通过版本控制进行共享(编译器设置、格式化程序配置文件等),而工作区首选项供您自己使用(颜色主题、字体大小等)。

标签: java eclipse


【解决方案1】:

Workspace 就像 linux 中用户的 homedir。

工作区将 JRE 版本、安装的服务器绑定在一起,如果您使用服务器连接器,所有数据和临时 WAR、EAR 都保存在那里(.metadata/plugins)。切换工作区用于切换工作的上下文:项目、客户端、语言、范例……工作区是 ECLIPSE 引导自身的目录。所有本地依赖解决方案最终都在工作区目录中。

VisualStudio 的“解决方案”概念甚至与工作区的概念相去甚远,因为解决方案只是将一个或多个项目分组并为它们提供一些通用 CLR 名称和属性的父文件夹。

我使用 Eclipse 至少 10 年了...我得出了这样的结论:对于使用相同 JRE 和相同 APP 服务器的所有项目,我都有相同的工作区。如果我需要一些特殊工具(Spring 或 CDI 或 PHP 或一些外来插件),我有不同的 Eclipse 版本。所有工作区都位于我的主目录中。

您可以将工作区粘贴/复制到不同的计算机,使用相同的 Eclipse 版本,它可以开箱即用。

【讨论】:

  • 非常感谢!这就是我要找的东西!
【解决方案2】:

简而言之,工作区是一个由 Eclipse 监控的特殊目录:工作区目录内的更改可能会触发某些事情。

例如,一个将被保存的 Java 文件将被编译,并可能在依赖的 Java 项目中创建错误标记。只有在刷新后才能在 Eclipse 内部看到在 Eclipse 之外所做的更改(假设 Window > Preferences: General > Workspace: Refresh using native hooks or pooling 被禁用):Eclipse 存储的不是慢速文件访问,而是内部工作区文件。

从历史的角度来看,工作空间的概念可以看作是数据库和文件系统之间的一种折衷(IBM VisualAge可以看作是Eclipse的前身,将要编辑的Java源代码存储在数据库中) )。

另外:

  • Eclipse 的多个实例可以同时运行,每个实例都有自己的工作区。

  • Eclipse 将几乎所有的首选项Window > Preferences)都存储在 工作区(在.metadata 子文件夹中)。不同的工作空间可以有不同的偏好。

  • .metadata 子文件夹也可用于缓存以加速 Eclipse。

我怀疑使用 Eclipse 开发 Eclipse 所需的目标平台 (dogfooding) 在工作区概念的决策中也发挥了作用(另请参阅 Eclipse bug 392652)。

【讨论】:

  • 好的,我发现第二个子弹真的很有用。谢谢!
  • 我怀疑使用 Eclipse 开发 Eclipse 所需的目标平台 (dogfooding) 在工作空间概念的决策中也发挥了作用。
【解决方案3】:

考虑一个 Java 接口和一个实现该接口的具体类。 Eclipse 工作区和底层目录类似。

作为项目和配置的逻辑容器的工作区。该逻辑概念由文件系统上的物理目录实现。它的设计方式实际上(理论上)可以使用(本地)文件系统以外的其他东西来实现工作区(类似于 VisualAge for Java 所做的,正如@howlger 的回答中所引用的那样),尽管我没有知道任何这样的实现。

重点是,您在使用 Eclipse IDE 时与之交互的是一个概念;最好不要将其过多地考虑为文件系统目录。这样做会导致一些假设并不总是成立,如果你足够深入地使用它。回到这个答案的第一句话,你有时可以假设一个接口的特定实现而侥幸,但如果你不小心这样做会有危险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2013-11-07
    相关资源
    最近更新 更多