108

我开始学习 Scala,几乎在每个教程中我都会看到一个build.sbt描述项目设置的文件。但现在我已经giter8从模板安装并创建了一个项目。并从模板丢失build.sbt文件生成项目,但它有build.scala(似乎用于相同目的,但更灵活)。

那么build.sbt和 和有什么不一样build.scala
哪个更受欢迎,为什么?

4

3 回答 3

97

举一个简单的例子,这个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文件还可以包括vals、lazy vals 和defs(但不包括objects 和classes)。

请参阅名为“.scala build definition”的 SBT 文档,特别是“将 build.sbt 与 Build.scala 关联”部分。

.scala如果您正在做一些复杂的事情,而您想要 Scala 的完整表现力,请考虑构建定义。

于 2013-08-02T07:02:47.687 回答
32

2016 年 7 月更新(3 年后)

Build.scala在sbt 0.13.12中正式弃用

不推荐使用该Build特征以支持.sbt格式

PR 2530实现了该弃用。
附录:.scala构建定义”已更新。

于 2016-07-25T11:15:14.670 回答
13

.sbts 被编译时,它们在与.scala目录内的文件合并之前project。它们不能在递归任务中使用,也就是说,您不能自定义sbtfrom sbt,例如。有关更多详细信息,请考虑阅读相关部分是 sbt 文档:http ://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition

于 2013-08-01T17:03:45.137 回答