SBT,scala编译器和scala SDK之间有什么关系?

时间:2015-01-19 20:23:04

标签: scala

如果我说得对,SDK只是scala项目中经常使用的一堆常见的jar,SBT是还包含scala编译器的构建工具吗?

项目需要访问由Scalahome路径提供的SDK吗?

这是对的吗?

1 个答案:

答案 0 :(得分:2)

scala-lang.org的发行版包含各种模块,包括编译器和标准库。

命令行工具scalac和scala默认将所有这些jar放在类路径上。例如,当您启动REPL(通过运行scala)时,scala.swing包位于类路径上。

sbt构建工具要求您指定所有依赖项,然后下载它们。或者,可以指定要使用的本地Scala发行版。

此外,sbt本身既是引导构建的启动器,也是运行构建的工具,可以是sbt的任意版本。此外,用于构建项目的编译器版本可以在项目基础上进行设置。

虽然sbt和编译器在功能上以这种方式解耦,但它们至少在源级别与编译器和IDE耦合。 (编译器源中有注释,“SBT仍然使用它。”)

此外,人们普遍认为编译器依赖渐进式编译来获得高质量的开发人员体验。激活工具作为网关工具,依赖于sbt。

从这个意义上说,sbt不仅仅是编译器工具的包装器,而且是其可用性的关键。

您只需使用sbt项目或IDE工作区即可。您可以从sbt或IDE工作表中运行REPL。

我喜欢从一个任意目录运行REPL,并且我保留了一堆运行scalac的片段,所以我总是为我当前的发行版提供一个shell别名。如果只有sbt可以选择在“干净的房间”tmp目录中运行自己。也许sbt-extras可以提供。