Qual'è la differenza tra build.sbt e build.scala?


107

Ho iniziato a imparare Scala e quasi in ogni tutorial vedo un build.sbtfile che descrive le impostazioni del progetto. Ma ora ho installato giter8e creato un progetto da template. E ha generato il progetto dal build.sbtfile mancante del modello , ma ha build.scala(che sembra utilizzato per gli stessi scopi, ma è più flessibile).

Allora qual è la differenza tra build.sbte build.scala?
Quale è più preferito e perché?

Risposte:


95

Per fare un breve esempio, questo build.sbt:

name := "hello"

version := "1.0"

è una notazione abbreviata più o meno equivalente a questa 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"      
  )
}

Il .sbtfile può anche includere vals, lazy vals e defs (ma non objects ed classes).

Vedere il documento SBT chiamato ".scala build definition" , in particolare la sezione "Relating build.sbt to Build.scala".

Considera una .scaladefinizione di build se stai facendo qualcosa di complicato in cui vuoi la piena espressività di Scala.


6
Su "build.sbt raramente finisce per essere sufficiente", è vero in 0.12 e precedenti che una volta che si desidera definire attività o build multi-modulo, sono necessari file .scala. Questo dovrebbe essere risolto in 0.13, dove ora puoi definire vals e più progetti. Ovviamente sei comunque il benvenuto a iniziare con .scala.
Mark Harrah

1
Documentazione SBT su questo argomento - scala-sbt.org/release/tutorial/Full-Def.html
neowulf33


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.