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

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

那么build.sbtbuild.scala什么build.scala呢?
哪一个更受欢迎?为什么?

举个简单的例子,这个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文件还可以包含vallazy val s和def s(但不包括objectclass es)。

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

考虑一个.scala构build定义,如果你想在Scala的完整performance力的情况下做一些复杂的事情。

2016年7月更新(3年后)

Build.scala在sbt 0.13.12被正式弃用

Build特性已被弃用,转而使用.sbt格式

公关2530实施了弃用。
“ 附录: .scala构build定义 ”已更新。

当正在编译.sbt ,它们就是在project目录内的.scala文件合并之前。 它们不能用于recursion任务,也就是说,例如,你不能从sbt自定义sbt 。 有关更详细的信息,请考虑阅读相关部分是sbt文档: http : //www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition