eclipse - 如何修改 Eclipse 位置以防止写入 user.home 目录?

标签 eclipse equinox eclipse-luna p2 eclipse-neon

我已经尝试了所有不同的设置,是的,我知道 eclipse.ini 和 config.ini 并且还尝试了不同的命令行参数!没有什么能解决我的问题!

所有尝试,每次我运行 eclipse.exe 时,它​​都想写入我的用户主页,即 .eclipse 和 .p2 文件夹。

我已经尝试过以下所有设置,也有不同的组合:

-Dosgi.user.area=file:/c:/eclipse-conf/e46
-Dosgi.configuration.area=file:/c:/eclipse-conf/e46
-Dosgi.instance.area=file:/c:/eclipse-conf/e46
-Declipse.p2.data.area=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.configurationFolder=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.installFolder=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.cache=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.roaming=file:/c:/eclipse-conf/e46/p2
-Dorg.eclipse.equinox.p2.cache.shared=file:/c:/eclipse-conf/e46/p2

这没有帮助!那么它写到 /e46/e46/p2文件夹但它还有创建/写入 c:\users\mrsimplemind\.eclipse & .eclipseextension & .p2即使我之前手动创建文件夹也无济于事。

现在请这里的任何人都成功地完全隔离了 Eclipse 配置输出?

我实现这一目标的唯一方法是更改​​ user.home但我不喜欢这种解决方法,因为原始“user.home”中有一些东西在 eclipse 中是需要的,例如.ssh 、 .git 、 .m2 maven 等。我不想为每个 eclipse user.home 保留配置文件设置的重复项

我只是想隔离eclipse,这应该是可配置的!我不喜欢 user.home 的输出 .. 这不是一个选项!对于每个 eclipse 安装,我想控制 eclipse 在哪些文件夹中创建的内容。

(我只能从 windows os 中得知,我不知道 Mac 上的 Eclipse 是否可以更好地使用上述设置)

我不使用 OOMPH 安装程序,下面的一些评论具有误导性

最佳答案

我尝试解决这个问题的方法几乎成功了。这是否适合您将取决于您可接受的最低质量水平。

  • 如果您试图阻止您的 Eclipse IDE 填满您的主驱动器,这种技术将起作用(它对我有用)。 Eclipse 是由 Oomph 安装还是从普通 zip 安装应该无关紧要,因为在此解决方案中没有修改与 Oomph 相关的任何内容。
  • 如果要求是可以完全删除用户主 p2 文件夹,但 Eclipse 仍然可以在不重新创建该目录的情况下工作,那么我还没有能够做到这一点。

  • 我将此作为部分解决方案发布,也许是希望其他人可以在此基础上找到更好的解决方法。显然,完美的解决方案是如果 eclipse 有一个可配置的下载位置,并且安装程序实际上只将所有软件安装到选定的位置,但这需要 Eclipse 开发人员修复产品的“P2”组件。以下只是一种解决方法。

    战略

    前提是下载池文件夹似乎总是硬编码到配置文件中,位于运行 eclipse 安装程序的用户的主文件夹下。此解决方法的本质是在您选择的位置创建一个假用户主文件夹,在配置文件中进行大量查找和替换,然后强制 Java 系统属性使用该新文件夹作为“user.home” "这会欺骗 Eclipse 使用它进行下载。

    方法

    这是在 Mint Linux 上的 Eclipse 4.7 Oxygen.3A 上测试的。
    需要对 Eclipse 安装文件夹进行广泛的脑部手术。
  • 将 Eclipse 安装在用户主驱动器以外的地方。
    在这个例子中,Oomph 安装程序被赋予 /media/LINAPPS/ubuntu-apps/eclipse-oxy作为安装目标,然后创建 /media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse在安装过程中。
  • 至少启动一次 Eclipse,然后关闭它并确保 Eclipse 没有运行。
  • 在 Eclipse 文件夹下创建一个新的假用户主驱动器文件夹。
    在这个例子中,我创建了 eclipse-oxy/eclipse/fakeHome
  • 将整个(隐藏的)p2 目录从您的用户主目录复制到新的 fakeHome 中。
    例如 cp -R /home/$USER/.p2 /media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/fakeHome/.p2
  • 转至 eclipse文件夹并编辑 eclipse.ini在文本编辑器中。进行以下 2 处更改:
  • --launcher.library 之后设置行是相对于 eclipse 的新位置中的池的副本文件夹,例如:fakeHome/.p2/pool/ ...等...
  • 在所有其他 vm 参数之后将新的系统属性设置附加到文件末尾,并将 user.home 设置为新的假用户主目录。
    例如:-Duser.home=/media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/fakeHome
  • 编辑文件 eclipse/configuration/org.eclipse.update/platform.xml .找到第一个 <site>条目并将 url 属性更改为相对于 eclipse 文件夹的新池文件夹。例如:url="file:fakeHome/.p2/pool/"
  • 编辑文件 /media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info并再次使用fakeUser 下的新p2 文件夹查找并替换对您用户主目录的p2 文件夹的所有引用。您可以在此处找到 1000 多个匹配项进行替换。似乎可以再次使这些相对于 eclipse 文件夹,因此“fakeHome/.p2/pool/.....”的路径将起作用。
  • 去新/eclipse/fakeHome/.p2文件夹并编辑“pools.info”和“profiles.info”中的两个文件。再次找到对您的真实用户主页的任何引用,并将其替换为 fakeUser 文件夹的路径。对这两个文件中的池位置使用完整路径名(从 root 开始)。
  • 解压、编辑和重新打包最新的 profileRegistry。找到文件夹eclipse/fakeHome/.p2/org.eclipse.equinox.p2.engine/profileRegistry/_media_LINAPPS_ubuntu-apps_eclipse-oxy_eclipse.profile/ .现在在该文件夹中找到最新的带时间戳的 gz 文件。例如,它可能被称为“1529736854441.profile.gz”。
    gunzip .gz 文件。编辑 .profile 文件并再次用新的 fakeUser 文件夹替换任何提及您的真实用户主页的内容。例如,在我的安装中,第一个属性设置必须更改为<property name='org.eclipse.equinox.p2.cache' value='/media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/fakeHome/.p2/pool'/> 删除旧的 gz 文件,然后将配置文件 gzip 成 gz,因此它已经替换了旧的。
  • 我还编辑了文件 /eclipse/fakeHome/.p2/org.eclipse.equinox.p2.core/cache/artifacts.xml并使用对 fakeHome 中新位置的引用替换了存储库名称,但我不确定这是让 eclipse 工作所必需的。
  • 开始 eclipse 。

  • 结果

    完成上述操作后,我尝试从“帮助”菜单中添加“安装新软件”。从Redhat和Spring下载了很多新插件后,新的fakeHome池占用了900MB,但原来的用户home池仍然不到400MB,这就是安装eclipse后的样子。因此,它成功地移动了更新程序的下载缓存,并且旧位置中没有文件得到更新,但是 .p2 下的两个目录似乎仍然触及了它们的时间戳。

    如果有人发现这很有用,或者想出如何改进它,请告诉我。

    关于eclipse - 如何修改 Eclipse 位置以防止写入 user.home 目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39168906/

    相关文章:

    import - 如何从工作区导入插件项目而不指定它们?

    osgi - <osgi :reference> and <osgi:service> in spring DM 和有什么区别

    Eclipse luna 主题问题

    eclipse - 无法为 Eclipse 安装 Cobertura 插件

    Android new Eclipse android sdk bundle 没有代码建议

    java - eclipse插件中的OSGI list

    java - 如何启用/禁用java,eclipse中的按钮?

    eclipse - Sysdeo Tomcat 插件在 Eclipse Luna 中不起作用

    Eclipse P2 - 不包括收集操作的接触点

    c++ - Eclipse Luna C++ 结束