【问题标题】:Why Scala's-SBT is too slow为什么Scala的-SBT太慢了
【发布时间】:2017-01-21 20:09:25
【问题描述】:

在使用 sbt 时,我在很多地方都面临缓慢

  1. 在 Intellij 中导入 SBT 项目 -- 大约(8-10 分钟)。
  2. SBT 项目的 Intellij 中的索引。
  3. sbt(在终端中,此命令需要 -- 大约(2-3 分钟))。
  4. compile(在 sbt shell 中,此命令需要 -- 大约(3-5 分钟))。
    5.每当我修改build.sbt 文件时,项目刷新需要3-4 分钟。

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

此问题与 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"

【问题讨论】:

  • 如果我们要回答相关问题,我认为您必须向我们展示您的代码。
  • @ChrisMartin 完成!
  • 这就是整个项目?我认为 SBT 文件会更相关。它是一个多模块项目吗?
  • @ChrisMartin 这不是一个大的或多模块的项目,我刚开始玩它,添加了build.sbt
  • 试试这个来分析你的 sbt 任务:stackoverflow.com/questions/32588234/…

标签: scala sbt


【解决方案1】:

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

在 SBT 服务器上使用 SBT 1.x 版本时,您可以提高 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:如果您的代码库很大,编译/构建仍然需要大量时间,因此请考虑将您的代码和工件安排为增量/缓存片段/子项目,以查看真正的提升。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多