如果我说得对,SDK只是scala项目中经常使用的一堆常见的jar,SBT是还包含scala编译器的构建工具吗?
项目需要访问由Scalahome路径提供的SDK吗?
这是对的吗?
答案 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
可以提供。