IntelliJ上的SBT需要很长时间才能刷新

Kak*_*aji 11 scala intellij-idea sbt

我有一个相当大的项目(15个以上的子项目),它有很多外部依赖项.当我改变一行build.sbt然后点击刷新时,IntelliJ会在很长一段时间内(30多分钟)继续解决各种依赖关系.

应该这么慢吗?从命令行使用sbt不会超过30秒左右.

我在用 -

Macbook pro mid 2015 with 16 GB ram
IntelliJ IDEA Ultimate 2017.2.5
sbt 0.13.13 
scala 2.11.11
Run Code Online (Sandbox Code Playgroud)

Has*_*tor 6

有一点可以帮助缓存依赖项解析,这是一个从sbt 0.13.7开始可用的设置.看看这里:http://www.scala-sbt.org/1.0/docs/Cached-Resolution.html,但基本上你需要为你的构建中的所有项目启用以下设置:

updateOptions := updateOptions.value.withCachedResolution(true)
Run Code Online (Sandbox Code Playgroud)

通过此设置,我能够将IntelliJ项目刷新时间从15分钟缩短到3分钟.仍然不理想,但更易于管理.

有一些警告,因为它是一个实验设置,它们在该页面中描述.基本上,如果你有SNAPSHOT依赖项,启用它只会让事情变得更糟,所以要注意这一点.


小智 5

Kakaji和Haspemulator的答案帮助我在~40个项目构建中将导入降低了约3分钟.除此之外,我发现IntelliJ SBT导入中的大部分时间都是从Ivy中获取依赖项作为updateClassifiers命令的一部分.

如果在导入项目时启用了"库源"复选框,则每次执行导入时都会发生这种情况.如果你也检查'sbt sources',我希望它会慢一点因为这意味着要解决更多的库.

加速的一种方法updateClassifiers是使用coursier进行依赖性解析.我刚刚将以下行添加到project/plugins.sbt,现在它在~1分钟内导入.

addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.1")
Run Code Online (Sandbox Code Playgroud)

您可以updateClassifiershttps://github.com/sbt/sbt/issues/1930上阅读更多有关缓慢的信息


Kak*_*aji 4

我按照 @y.bedrov 的建议在 IntelliJ 中启用了 SBT shell,现在刷新速度与命令行一样快!

首选项 > 构建、执行、部署 > 构建工具 > SBT > 选中“使用 SBT shell 进行构建和导入”。