作者:DTor惜涵_237 | 来源:互联网 | 2023-01-07 15:34
我有一个相当大的项目(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
Haspemulator..
6
有一点可以帮助缓存依赖项解析,这是一个从sbt 0.13.7开始可用的设置.看看这里:http://www.scala-sbt.org/1.0/docs/Cached-Resolution.html,但基本上你需要为你的构建中的所有项目启用以下设置:
updateOptions := updateOptions.value.withCachedResolution(true)
通过此设置,我能够将IntelliJ项目刷新时间从15分钟缩短到3分钟.仍然不理想,但更易于管理.
有一些警告,因为它是一个实验设置,它们在该页面中描述.基本上,如果你有SNAPSHOT依赖项,启用它只会让事情变得更糟,所以要注意这一点.
1> Haspemulator..:
有一点可以帮助缓存依赖项解析,这是一个从sbt 0.13.7开始可用的设置.看看这里:http://www.scala-sbt.org/1.0/docs/Cached-Resolution.html,但基本上你需要为你的构建中的所有项目启用以下设置:
updateOptions := updateOptions.value.withCachedResolution(true)
通过此设置,我能够将IntelliJ项目刷新时间从15分钟缩短到3分钟.仍然不理想,但更易于管理.
有一些警告,因为它是一个实验设置,它们在该页面中描述.基本上,如果你有SNAPSHOT依赖项,启用它只会让事情变得更糟,所以要注意这一点.
2> 小智..:
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")
您可以updateClassifiers
在https://github.com/sbt/sbt/issues/1930上阅读更多有关缓慢的信息