我开始学习Scala,几乎在每个教程中我都看到一个描述项目设置的build.sbt
文件。但是现在我已经安装了giter8
并从模板创建了一个项目。并且模板中生成的项目错过build.sbt
文件,但它有build.scala
(似乎用于相同目的,但更灵活)。
那么build.sbt
和build.scala
之间有什么区别?
哪个更受欢迎?为什么?
答案 0 :(得分:95)
举一个简短的例子,这个build.sbt
:
name := "hello"
version := "1.0"
是一种速记符号,大致相当于此project/Build.scala
:
import sbt._
import Keys._
object Build extends Build {
lazy val root = Project(id = "root", base = file(".")).settings(
name := "hello",
version := "1.0"
)
}
.sbt
文件还可以包含val
s,lazy val
和def
s(但不包括object
和class
个)。
请参阅the SBT document called ".scala build definition",特别是“将build.sb关联到Build.scala”一节。
如果你想要Scala的完整表现力做一些复杂的事情,请考虑一个.scala
构建定义。
答案 1 :(得分:30)
2016年7月更新(3年后)
Build.scala
已在sbt 0.13.12
不推荐使用
Build
特征,而采用.sbt
格式
PR 2530实现了弃用
“Appendix: .scala
build definition”已更新。
答案 2 :(得分:13)
在编译.sbt
时,它们在.scala
目录中与project
文件合并之前。它们无法用于递归任务,也就是说,您无法从sbt
自定义sbt
。有关更多详细信息,请参阅阅读相关部分是sbt文档:http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition