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

时间:2017-11-24 09:41:52

标签: 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

4 个答案:

答案 0 :(得分:6)

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

This works
This works too
This works too as well
Working 135

使用此设置,我能够将IntelliJ项目刷新时间从15分钟减少到3分钟。仍然不理想,但更易于管理。

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

答案 1 :(得分:5)

Kakaji和Haspemulator的答案帮助我在~40个项目构建中将导入时间缩短到约3分钟。除此之外,我发现IntelliJ SBT导入中的大部分时间都花在从{I {1}}命令中获取Ivy的依赖项。

每次执行导入时都会发生这种情况,如果您拥有“图书馆资源来源”。导入项目时启用复选框。如果你也检查一下来源,我希望它会慢一些。因为这意味着要解决更多的库。

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

updateClassifiers

您可以在https://github.com/sbt/sbt/issues/1930

了解有关addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.1") 慢的更多信息

答案 2 :(得分:3)

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

偏好设置>构建,执行,部署>构建工具> SBT>检查"使用SBT shell进行构建和导入"。

答案 3 :(得分:1)

我正在使用上述2的组合(  -首选项>构建,执行,部署>构建工具> SBT>选中“使用SBT Shell进行构建和导入”  -快递员

具有以下全局build.sbt:

    // file: ~/.sbt/0.13/plugins/build.sbt
    // purpose: add jar utils useful for development, but not wanted to projects' build.sbt

    // much better depts resolvement and fetching
    // usage: sbt update
    // https://github.com/coursier/coursier#why
    resolvers += Resolver.sonatypeRepo("snapshots")
    addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.1.0-SNAPSHOT")


    // enable this one if you want to use the local artifacts in your local repo's
    // ~/.ivy2/local/
    // ~/.ivy2/cache/
    // instead of the remote ones
    // updateOptions := updateOptions.value.withLatestSnapshots(false)


    resolvers ++= Seq(
       "typesafe" at "https://dl.bintray.com/typesafe/ivy-releases/",
       "Maven External Releases" at "https://artifactory-espoo1.ext.net.nokia.com/artifactory/public-maven-remotes/"
    )


    // eof file: ~/.sbt/0.13/plugins/build.sbt