Jaka jest różnica między build.sbt i build.scala?


107

Zacząłem uczyć się Scali i prawie w każdym tutorialu widzę build.sbtplik opisujący ustawienia projektu. Ale teraz zainstalowałem giter8i utworzyłem projekt z szablonu. I wygenerowany projekt z szablonu brakującego build.sbtpliku, ale ma build.scala(który wydaje się być używany do tych samych celów, ale jest bardziej elastyczny).

Jaka jest więc różnica między build.sbti build.scala?
Który jest bardziej preferowany i dlaczego?

Odpowiedzi:


95

Oto krótki przykład build.sbt:

name := "hello"

version := "1.0"

to skrótowa notacja z grubsza odpowiadająca temu 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"      
  )
}

.sbtPlik może zawierać także valS, lazy valS i defS (ale nie objectS i classES).

Zobacz dokument SBT o nazwie „.scala build definition” , szczególnie sekcja „Powiązanie build.sbt z Build.scala”.

Rozważ .scaladefinicję kompilacji, jeśli robisz coś skomplikowanego, w którym chcesz uzyskać pełną ekspresję Scali.


6
W przypadku pliku „build.sbt rzadko kiedy jest wystarczający”, prawdą jest, że w wersji 0.12 i wcześniejszych, gdy chcesz zdefiniować zadania lub kompilacje wielomodułowe, potrzebujesz plików .scala. Powinno to zostać rozwiązane w wersji 0.13, gdzie można teraz definiować wartości i wiele projektów. Oczywiście nadal możesz zacząć od .scala.
Mark Harrah,

1
Dokumentacja SBT na ten temat - scala-sbt.org/release/tutorial/Full-Def.html
neowulf33


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.