运行`scala`和`sbt console`有什么区别?

时间:2014-11-28 16:06:58

标签: scala sbt

以这些不同的方式运行scala shell有什么区别?

2 个答案:

答案 0 :(得分:33)

SBT与build.sbt文件定义的特定项目相关联,$ sbt console将加载与$ scala相同的REPL环境,但添加了所有项目可用于导入的构建中定义的代码和依赖项。此外,它将使用build.sbt定义的Scala版本。

例如:

$ scala
scala> import scalaz._
<console>:7: error: not found: value scalaz
       import scalaz._

但是使用此build.sbt

scalaVersion := "2.11.4"

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.0"

导入成功:

$ sbt console
...
scala> import scalaz._
import scalaz._

该命令加载Scala 2.11.4而不是系统范围的Scala(或PATH上的任何版本)。

此外,在构建的sbt console中添加新项目后调用libraryDependencies将获取它们。

答案 1 :(得分:7)

如果您调用scala,您将获得在操作系统路径上安装的任何scala版本。

如果您调用sbt控制台,则会获得在sbt build(build.sbt)中配置的scala版本,其中包含已在类路径中构建的所有库

有关详细信息,请参阅this answer