SBT 总是下载包/scala 库

Posted

技术标签:

【中文标题】SBT 总是下载包/scala 库【英文标题】:SBT always downloads the packages/scala libraries 【发布时间】:2012-09-08 20:59:02 【问题描述】:

我最近在 Windows XP SP3 机器上安装了 SBT 以开始使用 Scala。当我最初启动它时,它开始从远程位置获取所有 JAR - 非常类似于 Maven 或任何其他依赖项管理工具。

但是,每当我更改目录并启动sbt 时,它都会再次开始下载整个解决方案。有没有一种方法可以维护全局缓存,从而使工件只下载一次,而不是每次我更改工作目录时下载?

【问题讨论】:

实际上,它确实缓存了工件(为确保您可以查看$HOME/.ivy2/cache)。它首先查看本地缓存,然后才从外部存储库下载工件。 【参考方案1】:

如果您在新目录中运行相同版本的 sbt,它将首先在本地 ivy2 缓存中查找。它仍会检查所有资源,但如果它们已经存在,则会在本地获取它们。

但是,如果您使用的是 SBT extras,如果您更改为不同版本的 SBT,它可能会重新下载,因为它会为每个版本创建一个缓存。无论如何,这就是我在 Ubuntu 上的经验。

您可能遇到过某些类型的 sbt 插件,例如 sbt-idea,可能会下载其他资源,例如源代码库和文档。

【讨论】:

如果你不想让 sbt-idea 下载源代码和文档,你可以像 gen-idea no-classifiers 一样运行它 谢谢@om-nom-nom,我不知道!很酷的提示!【参考方案2】:

在我的情况下(Debian),每次我运行sbt 它都会从Getting org.scala-sbt sbt 0.13.16 获取文件。我没有本地ivy2 捕获。解决方案是将/root 中的.ivy2 文件夹复制到您的用户主页/home/username 并授予用户访问权限。

【讨论】:

这个答案间接帮助了。我正在使用“sudo docker”命令运行。我意识到如果我将我的用户添加到 docker 组,它会自动缓存 jar。因此,我按照此处列出的步骤进行操作,askubuntu.com/questions/477551/…

以上是关于SBT 总是下载包/scala 库的主要内容,如果未能解决你的问题,请参考以下文章

Linux环境下手动配置sbt

创建和使用没有 sbt 的独立 scalaz jar

SBT 无法下载依赖包

Scala sbt 添加国内镜像

下载 Scala 问题

关于scala工程结构(使用sbt)