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

se7*_*7en 29 scala sbt

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

Eri*_*lun 38

SBT与特定项目相关联build.sbt; 因此,$ sbt console将加载$ scala与可用于导入的所有项目代码和依赖项相同的REPL .显然,它还会加载定义的Scala版本build.sbt.

例如:

$ scala
scala> import scalaz._
<console>:7: error: not found: value scalaz
       import scalaz._
Run Code Online (Sandbox Code Playgroud)

vs给出这个build.sbt:

scalaVersion := "2.11.4"

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.1.0"
Run Code Online (Sandbox Code Playgroud)

然后:

$ sbt console
...
scala> import scalaz._
import scalaz._
Run Code Online (Sandbox Code Playgroud)

......进口PATH就好了.该命令也保证加载2.11.4版本的Scala; 但是,第一个命令会加载当前处于的任何scala版本sbt console(通常是Scala的系统范围安装,其版本可能与2.11.4一致,也可能不一致).

此外,libraryDependencies在添加新内容后第一次加载build.sbt将自动获取新的依赖项.


Rüd*_*ehn 7

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

如果你调用sbt console,你将获得在sbt build(build.sbt)中配置的scala版本,其中包含已在类路径中构建的所有库.

有关详情,请参阅此答案.