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

MyT*_*tle 107 scala sbt

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

那么build.sbt和之间的区别是什么build.scala
哪个更受欢迎,为什么?

Chr*_*tin 95

举一个简短的例子,这个build.sbt:

name := "hello"

version := "1.0"
Run Code Online (Sandbox Code Playgroud)

是一种大致相当于此的简写符号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"      
  )
}
Run Code Online (Sandbox Code Playgroud)

.sbt文件还可以包括vals,lazy vals和defs(但不包括objects和classes).

请参阅名为".scala build definition"的SBT文档,特别是"将build.sbt与Build.scala相关联"一节.

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

  • 在"build.sbt很少就足够了"中,0.12及更早版本确实如此,一旦你想要定义任务或多模块构建,你需要.scala文件.这应该在0.13中解决,您现在可以在其中定义val和多个项目.当然,您仍然可以从.scala开始. (6认同)

Von*_*onC 30

2016年7月更新(3年后)

Build.scala0.13.12中被正式弃用

Build特性已弃用,以支持该.sbt格式

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


tkr*_*man 13

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