В чем разница между build.sbt и build.scala?

95

Я начал изучать Scala и почти в каждом учебнике я вижу файл build.sbt, который описывает параметры проекта. Но теперь я установил giter8 и создал проект из шаблона. И сгенерированный проект из шаблона пропустил build.sbt файл, но у него есть build.scala (который, кажется, используется для тех же целей, но он более гибкий).

Так в чем разница между build.sbt и build.scala?
Что более предпочтительно и почему?

Теги:
sbt

3 ответа

92
Лучший ответ

Чтобы дать краткий пример, этот 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.

  • 6
    На «build.sbt редко оказывается достаточным», это верно в 0.12 и более ранних версиях, когда вам нужно определить задачи или многомодульные сборки, вам нужны файлы .scala. Это должно быть учтено в 0.13, где вы можете теперь определять значения и несколько проектов. Вы, конечно, все еще можете начать с .scala, хотя.
  • 1
    Документация SBT по этой теме - scala-sbt.org/release/tutorial/Full-Def.html
23

Обновление июля 2016 года (3 года спустя)

Build.scala официально устарел в sbt 0.13.12

Показатель Build устарел в пользу формата .sbt

PR 2530 реализует эту усталость.
"Приложение: .scala определение сборки" обновлено.

13

Когда .sbt компилируются, они перед этим объединены с .scala файлами внутри каталога project. Они не могут использоваться в рекурсивных задачах, т.е. Вы не можете настроить sbt из sbt, например. Для получения более подробной информации рассмотрим раздел, посвященный связанным с чтением, документации sbt: http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition

Ещё вопросы

Сообщество Overcoder
Наверх
Меню