Was ist der Unterschied zwischen build.sbt und build.scala?


107

Ich habe angefangen, Scala zu lernen und fast in jedem Tutorial sehe ich eine build.sbtDatei, die die Projekteinstellungen beschreibt. Aber jetzt habe ich giter8ein Projekt aus Vorlage installiert und erstellt. Und generiertes Projekt aus Vorlage fehlte build.sbtDatei, aber es hatbuild.scala (was für die gleichen Zwecke verwendet scheint, aber es ist flexibler).

Was ist der Unterschied zwischen build.sbtund build.scala?
Welches ist bevorzugter und warum?

Antworten:


95

Um ein kurzes Beispiel zu geben build.sbt:

name := "hello"

version := "1.0"

ist eine Kurzschreibweise, die in etwa dieser entspricht 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"      
  )
}

Die .sbtDatei kann auch vals, lazy vals und defs enthalten (jedoch nicht objects und classes).

Siehe das SBT-Dokument mit dem Namen ".scala Build Definition". , insbesondere den Abschnitt "Verknüpfen von build.sbt mit Build.scala".

Ziehen Sie eine .scalaBuild-Definition in Betracht , wenn Sie etwas Kompliziertes tun, bei dem Sie die volle Ausdruckskraft von Scala nutzen möchten.


6
Bei "build.sbt ist selten ausreichend" ist es in Version 0.12 und früher richtig, dass Sie, sobald Sie Aufgaben oder Builds mit mehreren Modulen definieren möchten, .scala-Dateien benötigen. Dies sollte in 0.13 behandelt werden, wo Sie jetzt Werte und mehrere Projekte definieren können. Sie können natürlich trotzdem mit .scala beginnen.
Mark Harrah

1
SBT-Dokumentation zu diesem Thema - scala-sbt.org/release/tutorial/Full-Def.html
neowulf33


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.