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


107

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

那么build.sbt和之间有什么区别build.scala
哪个更优选?为什么?

Answers:


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文件还可以包含vals,lazy vals和defs(但不包括objects和classes)。

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

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


6
关于“ build.sbt很少能满足要求”,在0.12及更早版本中,一旦要定义任务或多模块构建,就需要.scala文件。这应该在0.13中解决,您现在可以在其中定义val和多个项目。当然,仍然欢迎您从.scala开始。
马克·哈拉斯



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.