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

MrS*_*ind 12 eclipse p2 equinox eclipse-luna eclipse-neon

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

所有的尝试,仍然每次我运行eclipse.exe它想要写我的userhome即.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
Run Code Online (Sandbox Code Playgroud)

这没有用!好吧它写入/e46/e46/p2文件夹,但它创建/写入c:\users\mrsimplemind\.eclipse & .eclipseextension & .p2 即使我手动创建文件夹之前它将无济于事.

现在请这里有人成功完全隔离eclipse配置输出吗?

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

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

(我只能从windows os告诉我,我不知道Mac上的Eclipse如何使用上面的设置更好地工作)


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

小智 2

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

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

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

战略

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

方法

这是在 Mint Linux 上的 Eclipse 4.7 Oxygen.3A 上进行测试的。需要对 Eclipse 安装文件夹进行
广泛的脑部手术。

  1. 将 Eclipse 安装在用户主驱动器以外的位置。
    在此示例中,Oomph 安装程序被指定/media/LINAPPS/ubuntu-apps/eclipse-oxy为安装目标,然后/media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse在安装过程中创建。
  2. 至少启动 Eclipse 一次,然后将其关闭并确保 Eclipse 未运行。
  3. 在 Eclipse 文件夹下创建一个新的假用户主驱动器文件夹。
    在这个例子中我创建了eclipse-oxy/eclipse/fakeHome
  4. 将整个(隐藏)p2 目录从用户主目录复制到新的 fakeHome 中。
    例如cp -R /home/$USER/.p2 /media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/fakeHome/.p2
  5. 转到该文件夹​​并在文本编辑器中eclipse编辑。eclipse.ini进行以下 2 项更改:
    • 将后面的行设置--launcher.library为相对于文件夹的新位置中池的副本eclipse,例如:fakeHome/.p2/pool/...etc...
    • 将新的系统属性设置附加到所有其他 vm 参数之后的文件末尾,并将 user.home 设置为新的假用户主目录。
      例如:-Duser.home=/media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/fakeHome
  6. 编辑文件eclipse/configuration/org.eclipse.update/platform.xml。找到第一个<site>条目并将 url 属性更改为相对于 eclipse 文件夹的新池文件夹。例如:url="file:fakeHome/.p2/pool/"
  7. 编辑该文件/media/LINAPPS/ubuntu-apps/eclipse-oxy/eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info,再次查找对用户主目录 p2 文件夹的所有引用,并将其替换为 fakeUser 下的新 p2 文件夹。您可以在这里找到超过 1000 条火柴来替换。似乎再次可以使这些相对于 eclipse 文件夹,因此“fakeHome/.p2/pool/.....”路径将起作用。
  8. 转到新/eclipse/fakeHome/.p2文件夹并编辑“pools.info”和“profiles.info”中的两个文件。再次找到对真实用户主目录的任何引用,并将其替换为 fakeUser 文件夹的路径。在这两个文件中使用池位置的完整路径名(从根目录开始)。
  9. 解压、编辑并重新打包最新的 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 中,因此它替换了旧的文件。
  10. 我还编辑了该文件/eclipse/fakeHome/.p2/org.eclipse.equinox.p2.core/cache/artifacts.xml,并将存储库名称替换为对 fakeHome 内新位置的引用,但我不确定这对于让 Eclipse 工作是否必要。
  11. 开始日食。

结果

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

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