【问题标题】:SBT Downloads or Resolves Jar each time when code is compiled每次编译代码时 SBT 下载或解析 Jar
【发布时间】:2017-01-29 02:05:43
【问题描述】:

当我编译 sbt-scala 项目时,对于每次编译,sbt 都会下载或解析 jar,即使该 jar 在 .ivy2 缓存中可用,并且组装需要大量时间。

当我使用 Maven 时,依赖解析完成一次​​,如果存在于 .M2 中,组件将永远不会尝试下载相同的依赖,并且所有项目将直接引用来自 .M2 的依赖

当 jar 已经在 .ivy2 缓存中可用时,请告诉我有什么方法可以停止此解析或下载。

【问题讨论】:

    标签: scala maven sbt ivy


    【解决方案1】:

    你可以设置离线工作:

    当离线 := true 时,远程快照不会被分辨率更新,即使是明确请求的更新。这应该有效地支持在没有连接到远程存储库的情况下工作。以其他方式证明的可重复示例表示赞赏。显然,更新必须在离线之前成功运行。

    引用docs

    如果您可以跳过更新阶段。形成 sbt shell:

    在更新中设置跳过:= true

    如果您只想使用缓存的工件添加到您的 build.sbt

    updateOptions := updateOptions.value.withCachedResolution(true)
    

    我个人的偏好是 override default repos 并添加我的本地 maven repo(这样解决方案会发生,但速度很快)

    有人遇到了really far 这个问题,设置了一个巨大的堆栈(有趣但不建议)

    【讨论】:

    • 我尝试在 build.sbt 中给出 offline := true 问题没有解决。在编译项目时,它会尝试从外部 repo 下载。
    • 尝试使用交互模式并从 set shell 设置值 > set offline := true
    • 我也试过了。我使用 ./sbt 进入交互式 shell 并设置离线:= true。但不幸的是,它仍在尝试解决已经可用的依赖关系。 [信息] 解决 com.cloudera.cdh#cdh-root;5.3.8 ...
    • 你使用的是 0.13 版吗?
    • 我编辑了我的答案...有了这个 build.sbt 文件,我已经成功地跳过了解决方案,因为我有一个填充的常春藤缓存 gist.github.com/sammyrulez/7cd0aa8714c5867016209745e6969c30
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2017-06-01
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多