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?
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 val
s, lazy val
S et def
s (mais pas object
s et class
es) .
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.
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.
Quand .sbt
s 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