【问题标题】:Why is `Resolving` so slow in the compiling stage of SBT?为什么在 SBT 的编译阶段 `Resolving` 这么慢?
【发布时间】:2015-04-30 06:57:31
【问题描述】:

我发现当我运行sbt compile时,解决步骤通常需要很长时间,例如这个

[info] Resolving org.sonatype.oss#oss-parent;7 ...

有人对解决的实际含义有想法吗?为什么有必要?

【问题讨论】:

    标签: java scala maven sbt


    【解决方案1】:

    当 ivy(sbt 用于依赖管理)查看项目的依赖关系图以找出所有依赖关系和传递依赖关系,并解决它们之间的任何冲突时,例如,两个依赖关系可能依赖于不同版本的同一个库。

    结果会被缓存,但如果你做一个清理就会被删除,所以它将在下一个需要知道依赖关系的操作时重新计算。

    也可以配置你的项目,使 sbt 不能缓存结果,但需要在每次构建时重做这些计算,例如,如果你依赖于快照并配置 sbt 为每次构建更新快照.

    【讨论】:

    • 您知道是否可以在 sbt 中禁用此输出?理由:在 Travis 等运行器中,几乎 90% 的构建输出是“正在解决...”(每个“正在解决”都是构建日志中的单独一行)。
    • 有一个来自 Paul Phillips 的替代 sbt 启动器,它有一个可以工作的日志输出黑名单:github.com/paulp/sbt-extras
    • 谢谢,这可能是一个解决方案 - 同时我发现一个似乎对我不起作用的标志(还):github.com/sbt/sbt/issues/1791
    • 仍然看起来需要相当长的时间来查看项目的依赖关系图以找出所有依赖关系和传递依赖关系。该步骤是在 ivy 中优化的,还是只是通过蛮力扫描?
    猜你喜欢
    • 2011-04-07
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多