如何在不同的工作空间中共享Eclipse配置

143

我在不同机器上使用Eclipse(PDT)作为主要集成开发环境(如家里、笔记本电脑、办公室等)。有什么方法可以实现在多台计算机之间实现Eclipse和项目配置的共享?我应该对它们进行版本控制,还是有其他更简单的方法?

你如何确保在所有计算机上都使用相同的既好又最新的配置文件?


我在使用Dropbox共享单个工作区的代码时遇到了各种问题。我倾向于为每台机器设置一个工作区,并使用Dropbox同步一组工作区。 - djangofan
3
我知道这是一道老问题,但为了纪念,我发现这篇博客文章非常有用:http://mcuoneclipse.wordpress.com/2012/04/04/copy-my-workspace-settings/ (这不是我的帖子 :-)) - Stewart
1
在Windows环境中总是会出现一些复杂的情况。将工作区设置检查到源代码控制中并不是一个解决方案。源代码控制设置是工作区设置的一部分。 - chris topinka
11个回答

193

跨工作区共享Eclipse的特定设置:

  1. 进入${old_workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings
  2. 将该目录下的所有内容复制到${new_workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings

这将确保${new_workspace}具有与${old_workspace}相同的配置。

如有任何问题,请进行更新。


8
我个人将这些文件夹链接到了Dropbox,并且RSE配置文件也已经链接。Eclipse设置的整体配置也可以从IDE中导出。 - Anton S
6
我会从这个目录开始,但可惜还有许多其他设置需要同步,它们不在这个目录里。 - David Harkness
@DavidHarkness:请详细说明-哪些设置-在哪里?您可以在这里发布答案-我问的是:”硬链接\.metadata\.plugins\org.eclipse.core.runtime\.settings目录是否足够安全?”-对于peakit:事情并不像那么简单-${old_workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings还包含工作区设置和其他特殊性质-请参见我的分析here - Mr_and_Mrs_D
使用Robocopy复制文件夹: https://dev59.com/rnRB5IYBdhLWcg3w6LR2 - weberjn
1
为了让它们保持同步,请考虑使用Unison:http://www.cis.upenn.edu/~bcpierce/unison/ - Alice Purcell

125

另一种选择是导出/导入:

  1. 从您现有的工作区, 文件->导出...->常规->首选项,勾选“全部导出”,并选择要保存到的文件(例如prefs.epf)
  2. 在新工作区中启动Eclipse, 文件->导入...->常规->首选项,选择您的文件(prefs.epf),勾选“全部导入”

这对于原作者来说效果很好:他成功地导入了代码格式、代码风格、svn仓库、jres配置。

编辑: 在Eclipse Juno上,此方法效果较差。某些首选项无法顺利移植,如保存操作。


2
同样适用于 Eclipse STS(Spring Tool Suite)3.4。 - рüффп
1
曾在Eclipse Luna上工作过。 - GP cyborg
使用过Eclipse Neon。 - RARA

9

这是一个相对较新的项目,但看起来 Eclipse Oomph 就是为了这个目的而创建的。通过这个工具,您可以创建一个独特的配置,并与他人共享。我尚未使用过它(但计划使用):

https://projects.eclipse.org/projects/tools.oomph


Yatta Profiles 建立在 Oomph/Eclipse 安装程序的基础上,使共享变得更加容易。 - Bernhard Stadler
1
@BernhardStadler Yatta 不会传输偏好设置。 - ThomasMcLeod
Yatta可以记住默认的偏好值 - 工作区偏好设置可以通过Preference Recorder记录,对于项目偏好设置,您不需要任何额外的工具,因为您可以将它们添加到您的SCM中。主要的预期使用案例是为团队提供一键式开发工作区设置,以最小化设置时间,但在不同计算机之间同步私人配置文件也是可能的。我自己从未尝试过,但根据他们的网页,应该可以从在线配置文件应用更新,因此可以使用私人在线配置文件作为同步机制。 - Bernhard Stadler

7
我必须同时在多个工作区上工作,每次我创建新的工作区时都需要设置很多首选项。我创建了一个模板工作区,并在其中创建了所有所需的设置。每当我创建一个新的工作区时,我会将 {new_workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings 的符号链接指向 {template_workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings。因此,当您编辑任何工作区中的任何首选项时,它会复制到所有其他工作区中。
我在我的 .profile 中创建了此函数别名,以便一旦我创建新的工作区,我就可以在命令提示符中运行此函数,并将我的新工作区名称作为参数,以便创建链接。
function eclset(){
    present_dir=`pwd`;
    cd  {parent_to_workspace}/$1/.metadata/.plugins/org.eclipse.core.runtime ; 
    rm -rf .settings ; 
    ln -s {parent_to_workspace}/template/.metadata/.plugins/org.eclipse.core.runtime/.settings .settings;
    cd $present_dir;
}

其实这也是我想做的(在Windows上)-但有一些复杂性:请参见我的答案这里 - Mr_and_Mrs_D

4

实际上,您可以设置许多项目特定的设置,并将其存入源代码控制中。对于小型项目,这非常有效。对于较大的项目,我们决定使用单个文件来管理所有项目,并将其检入到一个单独的“资产”项目中,以维护开发人员需要开始工作的内容。这还包括许可证和其他必需文件。


4
从 Eclipse Neon 版本开始(可能也包括 Mars 版本),你可以复制以下两个目录,以在不同的工作空间之间共享你的工作台和设置/首选项:
    [workspace]/.metadata/.plugins/org.eclipse.core.runtime/.settings
    [workspace]/.metadata/.plugins/org.eclipse.e4.workbench

更新:这两个目录在Eclipse 2022-03中仍然存在(请注意版本命名的更改,从天文学相关更改为YYYY-MM)


它真的在Neon中引入了吗?是否有变更日志/自述文件或其他信息可以确认这一点? - Danijel
通常开发者都有自己的GIT存储库,而不是共享的,所以列表如下:
  1. [workspace]/.metadata/.plugins/org.eclipse.core.runtime/.settings
    • 除了[workspace]/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.egit.core.prefs外
  2. [workspace]/.metadata/.plugins/org.eclipse.e4.workbench
- Timo Riikonen
@TimoRiikonen 问题中没有提到Git,因此我们不知道问题的作者使用了哪个版本控制系统。然而,你的评论可能对使用Git的人有用,所以你可以简化/澄清你的评论,甚至将其作为答案提供,这样它就会突出显示,并澄清它是用于Git的。干杯! - Antonio Malcolm
@Danijel 我不知道是否有变更日志提到了引入要复制的文件的Eclipse版本。我提到“从Neon(可能还包括Mars)开始”,因为那是我回答这个问题时所在的版本,而且我正在这些版本之间移动,这是相关信息(以免其他版本的用户感到困惑)。 - Antonio Malcolm

1

这里有两个问题。首先,有项目定义,即.project文件和项目特定设置。个人而言,我喜欢将它们放在我的源代码控制中,因为这样检出项目并设置IDE会更容易。

其次,您有工作区设置。在这个领域,您会看到很多问题。我建议看一下Pulse:它是一个增强的Eclipse发行版,可以保存您的工作区设置,并将其与多台机器或团队成员同步。


1

您还可以从${old_workspace}/.metadata/.plugins/org.eclipse.core.runtime/.settings复制.prefs文件到名为.settings的文件夹中,该文件夹位于您项目的根文件夹中,然后将其添加到SVN(或CVS或...)中。

这样,在更新期间,设置将与源代码一起分发给所有开发人员。


0

您可以使用Eclipstyle将一个工作区的偏好克隆到其他工作区。您还可以导出您的偏好设置并稍后进行克隆。


0

我也曾经有过同样的问题。

我的方法是将项目数据存储在由owncloud管理的目录中。

项目X是在工作站A上创建的,路径指向我自己的云层次结构的一个新子目录。默认工作区仍驻留在A的文件系统上。

当我坐在工作站B时,我打开默认的本地工作区(在B上本地)并使用“同步”的ownCloud目录中现有源创建一个新项目。

只需单击刷新,每次启动eclipse时,您都可以获得当前的项目数据。同步自动运行在后台,因此请注意,在完成工作时关闭eclipse并给ownCloud上传新文件的机会。

Tomcat或其他服务器正在本地运行,配置是通过scp手动在机器之间复制的。只有在服务器设置发生更改时才会发生这种情况,这并不经常发生。

我尚未遇到在使用不同的JDK和NEON 2(arch linux)和NEON 3(下载并在debian stretch上运行)时出现兼容性问题。

最好的祝福 Armin


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接