build.sbt和build.scala有什么区别?

时间:2013-08-01 16:55:24

标签: scala sbt

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

那么build.sbtbuild.scala之间有什么区别? 哪个更受欢迎?为什么?

3 个答案:

答案 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 valdef s(但不包括objectclass个)。

请参阅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