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


107

J'ai commencé à apprendre Scala et presque dans chaque tutoriel, je vois un build.sbtfichier qui décrit les paramètres du projet. Mais maintenant, j'ai installé giter8et créé un projet à partir d'un modèle. Et le projet généré à partir du build.sbtfichier manquant du modèle , 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.sbtet build.scala?
Lequel est le plus préféré et pourquoi?

Réponses:


95

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 .sbtfichier peut également inclure vals, lazy vals et defs (mais pas objects et classes).

Voir le document SBT intitulé ".scala build definition" , en particulier la section "Relating build.sbt to Build.scala".

Considérez une .scaladéfinition de construction si vous faites quelque chose de compliqué où vous voulez toute l'expressivité de Scala.


6
Sur "build.sbt finit rarement par être suffisant", il est vrai dans la version 0.12 et les versions antérieures qu'une fois que vous voulez définir des tâches ou des builds multi-modules, vous avez besoin de fichiers .scala. Cela devrait être traité dans la version 0.13, où vous pouvez maintenant définir des vals et plusieurs projets. Vous êtes bien sûr toujours les bienvenus pour commencer avec .scala.
Mark Harrah

1
Documentation SBT sur ce sujet - scala-sbt.org/release/tutorial/Full-Def.html
neowulf33


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.