web-dev-qa-db-fra.com

Quelle est la différence entre build.sbt et build.scala?

J'ai commencé à apprendre Scala et presque dans chaque tutoriel, je vois un build.sbt fichier qui décrit les paramètres du projet. Mais maintenant j'ai installé giter8 et créé un projet à partir d'un modèle. Et projet généré à partir du modèle raté build.sbt fichier, mais il a build.scala (qui semble utilisé aux mêmes fins, mais il est plus flexible).

Alors, quelle est la différence entre build.sbt et build.scala?
Quelle est la préférence et pourquoi?

107
MyTitle

Pour donner un bref exemple, ceci build.sbt:

name := "hello"

version := "1.0"

est une notation abrégée à peu près équivalente à ceci 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"      
  )
}

Le fichier .sbt Peut également inclure vals, lazy val S et defs (mais pas objects et classes) .

Voir le document SBT appelé ".scala build definition" , en particulier la section "Relier build.sbt à Build.scala".

Envisagez une définition de construction .scala Si vous faites quelque chose de compliqué pour lequel vous voulez toute l'expressivité de Scala.

95
Chris Martin

Mise à jour juillet 2016 (3 ans plus tard)

Build.scala est officiellement déconseillé dans sbt 0.13.12

Le trait Build est déconseillé au profit du .sbt format

PR 25 implémente cette dépréciation.
" Appendice: .scala définition de construction "a été mis à jour.

30
VonC

Quand .sbts sont en cours de compilation, ils sont avant cette sorte de fusion avec le .scala fichiers dans le répertoire project. Ils ne peuvent pas être utilisés dans des tâches récursives, autrement dit, vous ne pouvez pas personnaliser sbt à partir de sbt, par exemple. Pour plus d'informations, consultez la section relative à la documentation sbt: http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition

13
tkroman