¿Cuál es la diferencia entre build.sbt y build.scala?


107

Empecé a aprender Scala y casi en cada tutorial veo un build.sbtarchivo que describe la configuración del proyecto. Pero ahora he instalado giter8y creado un proyecto a partir de la plantilla. Y proyecto generado a partir del build.sbtarchivo de plantilla perdido , pero lo ha hecho build.scala(que parece usado para los mismos propósitos, pero es más flexible).

Entonces, ¿cuál es la diferencia entre build.sbty build.scala?
¿Cuál es más preferido y por qué?

Respuestas:


95

Para dar un breve ejemplo, esto build.sbt:

name := "hello"

version := "1.0"

es una notación abreviada aproximadamente equivalente a esto 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 .sbtarchivo también puede incluir vals, lazy vals y defs (pero no objects y classes).

Consulte el documento SBT llamado "Definición de compilación .scala" , en particular la sección "Relacionando build.sbt con Build.scala".

Considere una .scaladefinición de compilación si está haciendo algo complicado donde desea la expresividad completa de Scala.


6
En "build.sbt rara vez termina siendo suficiente", es cierto en 0.12 y anteriores que una vez que desee definir tareas o compilaciones de varios módulos, necesita archivos .scala. Esto debería abordarse en 0.13, donde ahora puede definir vals y múltiples proyectos. Sin embargo, aún eres bienvenido a comenzar con .scala.
Mark Harrah

1
Documentación de SBT sobre este tema - scala-sbt.org/release/tutorial/Full-Def.html
neowulf33


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.