如何为每个用户或系统范围配置常春藤缓存目录?

Rue*_*ler 32 scala ivy sbt

我使用SBT作为构建Scala项目的构建工具.

我的问题是,我无法配置SBT将依赖项下载到我的用户主目录.因此,我正在寻找一个每用户甚至更好的系统范围设置来告诉SBT将Ivy缓存目录放在其他地方.

使用maven,可以使用每用户settings.xml来配置本地存储库.

我读过如何覆盖常春藤缓存的位置?它是答案,但它似乎只描述了如何在每个项目的基础上配置设置.

如果没有其他选择,我会选择每个项目设置,但我没有从上述问题得到答案.更多细节将是最受欢迎的,例如放置ivysettings.xml的位置.我将它放入项目的根目录,但它不起作用.

Mar*_*Tye 43

sbt.ivy.home物业只是解决方案的一半.它控制sbt启动程序下载sbt本身的位置(以及scala编译器和库等相关依赖项)正如Joachim Hofer所述,它对下载项目声明的依赖项的位置没有影响.

要更改位置,您必须设置该ivy.home属性.因此,为了增加Joachim的第一个解决方案,您需要设置两个系统属性:

java -Dsbt.ivy.home=/tmp/.ivy2/ -Divy.home=/tmp/.ivy2/ -jar `dirname $0`/sbt-launch.jar "$@"
Run Code Online (Sandbox Code Playgroud)

使用这些属性,启动程序将下载项目和sbt的依赖项到/tmp/.ivy2/目录.当然,您也可以将它们放在不同的目录中.

  • 我知道这是一个旧帖子,但这个信息非常好,如果有人需要 - 你可以将上面的信息添加到位于底部文件夹SBT/Conf的文件"sbtconfig.txt"中:-Dsbt.ivy.home = j:/tmp/.ivy2/ -Divy.home = j:/tmp/.ivy2/ (5认同)
  • @LaloInDublin"sbtconfig.txt"(仅限Windows)是一个列出JVM选项的配置文件,由sbt.bat使用.sbtop是由sbt shell脚本使用的. (2认同)

小智 30

您只需将环境变量添加到sbt launch shell脚本:

java -Dsbt.ivy.home=/tmp/.ivy2/ ...
Run Code Online (Sandbox Code Playgroud)

请参阅官方文档中的" 库管理 ".

  • 'sbt启动shell脚本'在哪里? (6认同)

opy*_*ate 8

如果你还没有,你应该使用sbt-extras.

然后,它只是你传递它的旗帜:

sbt -ivy /path/to/.ivy2
Run Code Online (Sandbox Code Playgroud)