【问题标题】:Using guest VM's Ivy cache directory for dependencies from Eclipse on host使用来宾 VM 的 Ivy 缓存目录来获取主机上 Eclipse 的依赖项
【发布时间】:2014-02-05 05:57:17
【问题描述】:

我在 VirtualBox 虚拟机上有一个 SBT 项目,我安装了 SBT 并找到了我的项目。我使用sbt通过虚拟机运行项目,所以所有外部jar都位于VM中的/root/.ivy2/

我还使用 sshfs 安装了所有 VM 驱动器,并以 ~/dev/remote/project/root/.ivy/ 的身份从主机路由到外部 jar。

我在主机上使用 Eclipse/ScalaIDE,所以当我打开项目时,IDE 找不到外部 jar。

如何告诉 Eclipse 自动使用这些 jars 或如何使用 Eclipse 和 VM 上的项目?

【问题讨论】:

  • 您能展示如何将 Eclipse 中的库/jar 映射到磁盘上它们对应的 jar 吗?我的理解是,jar 来自哪里并不重要——安装的(来自主机)或本地(来自来宾操作系统的本机)磁盘。
  • 问题是 sbt 命令“eclipse”使用来自 VM /root 的路径创建 .classpath 文件,但是 eclipse IDE 是在主机上运行的,因此路径是挂载文件夹的主机路径 + 来自 VM 的路径。所以,当我在我的虚拟机中运行“sbt eclipse”时,它会生成 但只有当我将其更改为
  • 现在我必须手动将所有 /root/ 重命名为 /home/codez/Dev/remote/wm1/root/ 每次我添加新的依赖项时 .classpath 文件,以便 Eclipse 可以找到它。
  • 您能否使用rm -rf /root/.ivy2/cache 删除本地Ivy2 缓存目录并使用ln -s /home/codez/Dev/remote/wm1/root/.ivy2/cache /root/.ivy2/cache 创建它的虚拟 副本?
  • 我应该说...你能删除 host 上的本地 Ivy2 缓存目录吗(因为主机是你运行 Eclipse 的地方,并且依赖项在来宾操作系统上,在虚拟机上)。

标签: eclipse sbt scala-ide


【解决方案1】:

sbteclipse 不是为了支持这个用例而创建的。 可能可以调整 eclipse 命令使用的 sbt 设置,但您必须深入了解 sbt。

否则,您可以创建一个简单的 sh 脚本来在每次依赖项更改时“修复”文件:

sed -i 's%"/root/.ivy2/%"/home/codez/Dev/remote/wm1/root/.ivy2/%' .classpath

【讨论】:

    【解决方案2】:

    您是否尝试过:

    • the cache directive修改ivysettings.xml
    • 更改 sbt 脚本以使用 -cache 指令
    • 更改 java 调用以使用 -Dsbt.ivy.home 指令

    指向已挂载的 VM ivy 缓存

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 2015-11-05
      • 2020-09-28
      相关资源
      最近更新 更多