Я начал изучать Scala и почти в каждом учебнике я вижу файл build.sbt
, который описывает параметры проекта. Но теперь я установил giter8
и создал проект из шаблона. И сгенерированный проект из шаблона пропустил build.sbt
файл, но у него есть build.scala
(который, кажется, используется для тех же целей, но он более гибкий).
Так в чем разница между build.sbt
и 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
может также содержать val
s, lazy val
s и def
(но не object
и class
es).
Смотрите документ SBT, называемый "определение сборки .scala" , в частности раздел "Отсоединение build.sbt к Build.scala".
Рассмотрите определение сборки .scala
, если вы делаете что-то сложное, где вам нужна полная выразительность Scala.
Обновление июля 2016 года (3 года спустя)
Build.scala
официально устарел в sbt 0.13.12
Показатель
Build
устарел в пользу формата.sbt
PR 2530 реализует эту усталость.
"Приложение: .scala
определение сборки" обновлено.
Когда .sbt
компилируются, они перед этим объединены с .scala
файлами внутри каталога project
. Они не могут использоваться в рекурсивных задачах, т.е. Вы не можете настроить sbt
из sbt
, например. Для получения более подробной информации рассмотрим раздел, посвященный связанным с чтением, документации sbt: http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition