107 votes

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

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

95voto

Chris Martin Points 5195

Pour donner un bref exemple, cette build.sbt :

name := "hello"

version := "1.0"

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

El .sbt peut également inclure val s, lazy val et def (mais pas object et class es).

Ver Le document SBT appelé ".scala build definition". en particulier la section "Relating build.sbt to Build.scala".

Considérons un .scala si vous faites quelque chose de compliqué et que vous voulez profiter de toute l'expressivité de Scala.

32voto

VonC Points 414372

Mise à jour de juillet 2016 (3 ans plus tard)

Build.scala est officiellement déprécié dans sbt 0.13.12

El Build est déprécié au profit du trait .sbt format

PR 2530 met en œuvre cette dépréciation.
" Annexe : .scala définition de la construction "a été mis à jour.

13voto

cdshines Points 2108

Lorsque .sbt sont compilées, elles sont avant cela en quelque sorte fusionnées avec les .scala fichiers à l'intérieur project répertoire. Ils ne peuvent pas être utilisés dans les tâches récursives, c'est-à-dire que vous ne pouvez pas personnaliser sbt de sbt par exemple. Pour des informations plus détaillées, vous pouvez lire la section correspondante dans la documentation de sbt : http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X