scalaVersion
配置用于编译的 Scala 版本。默认情况下,sbt 还添加了对具有此版本的 Scala 库的依赖关系。有关如何禁用此自动依赖关系,请参见下一节。如果未指定 Scala 版本,则使用构建 sbt 时所用的版本。建议明确指定 Scala 版本。
例如,要将 Scala 版本设置为“2.11.1”,
scalaVersion := "2.11.1"
sbt 默认情况下会添加对 Scala 标准库的依赖关系。要禁用此行为,请将 autoScalaLibrary
设置设置为 false。
autoScalaLibrary := false
要在所有范围内将 Scala 版本设置为特定值,请使用 ++
命令。例如,要临时使用 Scala 2.10.4,请运行
> ++ 2.10.4
使用 Scala 主目录的路径定义 scalaHome
设置将使用该 Scala 安装。当使用本地 Scala 版本时,sbt 仍然需要设置 scalaVersion
。例如,
scalaVersion := "2.10.0-local"
scalaHome := Some(file("/path/to/scala/home/"))
请参见 交叉构建。
consoleQuick
操作检索依赖关系并将它们放在 Scala REPL 的类路径上。项目的源代码不会被编译,但任何源依赖关系的源代码都会被编译。要使用测试依赖关系进入 REPL,但不要编译测试源代码,请运行 Test/consoleQuick
。这将强制编译主源代码。
console
操作检索依赖关系,编译源代码并将它们放在 Scala REPL 的类路径上。要使用测试依赖关系和已编译的测试源代码进入 REPL,请运行 Test/console
。
> consoleProject
有关详细信息,请参见 consoleProject 页面。
设置 console / initialCommands
以设置在运行 console
和 consoleQuick
时评估的初始语句。要单独配置 consoleQuick
,请使用 consoleQuick / initialCommands
。例如,
console / initialCommands := """println("Hello from console")"""
consoleQuick / initialCommands := """println("Hello from consoleQuick")"""
consoleProject
命令由 consoleProject / initialCommands
单独配置。默认情况下,它不使用来自 console / initialCommands
的值。例如,
consoleProject / initialCommands := """println("Hello from consoleProject")"""
设置 console / cleanupCommands
以设置在退出由 console
和 consoleQuick
启动的 Scala REPL 后评估的语句。要单独配置 consoleQuick
,请使用 consoleQuick / cleanupCommands
。例如,
console / cleanupCommands := """println("Bye from console")"""
consoleQuick / cleanupCommands := """println("Bye from consoleQuick")"""
consoleProject
命令由 consoleProject / cleanupCommands
单独配置。默认情况下,它不使用来自 console / cleanupCommands
的值。例如,
consoleProject / cleanupCommands := """println("Bye from consoleProject")"""
sbt 在与 sbt 本身相同的 JVM 中运行测试,Scala 类不在与应用程序类相同的类加载器中。这在 console
中以及当 run
未分叉时也是如此。因此,在使用 Scala 解释器时,务必将其正确设置,以避免类似以下错误消息:
Failed to initialize compiler: class scala.runtime.VolatileBooleanRef not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programmatically, settings.usejavacp.value = true.
关键是使用embeddedDefaults 初始化解释器的设置。例如
val settings = new Settings
settings.embeddedDefaults[MyType]
val interpreter = new Interpreter(settings, ...)
这里,MyType
是一个代表性类,应包含在解释器的类路径上及其应用程序类加载器中。有关更多背景信息,请参见导致添加embeddedDefaults 的最初的提议。
类似地,在使用ILoop 的break 和breakIf 方法时,将代表性类用作类型参数,如以下示例所示
def x(a: Int, b: Int) = {
import scala.tools.nsc.interpreter.ILoop
ILoop.breakIf[MyType](a != b, "a" -> a, "b" -> b )
}