Ответ 1
SBT привязан к определенному проекту, определенному build.sbt
; поэтому $ sbt console
будет загружать тот же REPL, что и $ scala
, но со всем кодом проекта и зависимостями, доступными для импорта. Он также, очевидно, загружает версию Scala, определенную в build.sbt
.
Например:
$ scala
scala> import scalaz._
<console>:7: error: not found: value scalaz
import scalaz._
vs с учетом этого build.sbt
:
scalaVersion := "2.11.4"
libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.0"
то
$ sbt console
...
scala> import scalaz._
import scalaz._
... импортирует scalaz._
просто отлично. Команда также гарантирует загрузку версии 2.11.4 Scala; первая команда, однако, загружает любую версию Scala, которая находится в PATH
на данный момент (обычно это ваша системная установка Scala, версия которой может совпадать или не совпадать с 2.11.4).
Кроме того, загрузка sbt console
в первый раз после добавления чего-то нового в libraryDependencies
будет идти и автоматически получать новую зависимость.