为什么Scala的SBT太慢

时间:2016-09-14 05:52:17

标签: scala sbt

在使用sbt

时,我在许多地方都面临着缓慢的问题
  
      
  1. 在Intellij中导入SBT项目 - 大约(8-10分钟)。
  2.   
  3. SBT项目的Intellij索引。
  4.   
  5. sbt(终端此命令需要 - 大约(2-3分钟))。
  6.   
  7. compile(在sbt shell中,此命令需要 - 大约(3-5分钟))   5.无论何时我修改build.sbt文件,项目刷新需要3-4   分钟。
  8.   

我需要检查更多的地方,但我经常面对的指定点以上。

此问题与SBT或Scala有关吗?如果是,如何解决相同问题

注意:我有良好的互联网连接,所以这不是网络问题。

我的Scala类文件:

import org.scalatest._

class TaskManagerSpec extends FlatSpec with Matchers {

  "An empty tasks list" should "have 0 tasks due today" in {
    val tasksDueToday = TaskManager.allTasksDueToday(List())
    tasksDueToday should have length 0
  }

}

build.sbt

name := "tasky"
version := "0.1.0"
scalaVersion := "2.11.6"
resolvers += "Artima Maven Repository" at "http://repo.artima.com/releases"
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.0" % "test"

1 个答案:

答案 0 :(得分:2)

SBT很慢,因为编译在Scala和Scala编译中完成的内部代码很慢,因为它是一种复杂的语言(但是一旦编译Scala在运行时加快了很多)

使用SBT 1.x版本和SBT服务器时,可以提升SBT。 SBT服务器允许您仅使用命令行和IDE之间共享的一个SBT实例。这非常有用,更多信息请访问:https://www.scala-sbt.org/1.x/docs/sbt-server.html

另外考虑使用更轻的其他构建工具,如PANTS,它基于Python,可以解释并且速度更快。更多信息:https://www.pantsbuild.org/

注意:PANTS文档和社区不像SBT那样广泛,但是值得一试,PANTS可以做很多惊人的事情。

注意2:如果你的代码库很大,那么编译/构建仍然需要花费很多时间,所以考虑将你的代码和工件安排为增量/缓存的片段/子项目,以便看到真正的提升。