update - ¿Cuál es la diferencia entre build.sbt y build.scala?
scala sbt ubuntu (3)
Empecé a aprender Scala y casi en cada tutorial veo un archivo build.sbt
que describe la configuración del proyecto. Pero ahora he instalado giter8
y giter8
creado un proyecto a partir de la plantilla. Y el proyecto generado a partir de la plantilla se olvidó del archivo build.sbt
, pero tiene build.scala
(que parece usado para los mismos fines, pero es más flexible).
Entonces, ¿cuál es la diferencia entre build.sbt
y build.scala
?
¿Cuál es más preferido y por qué?
Actualización julio de 2016 (3 años después)
Build.scala
está oficialmente obsoleto en sbt 0.13.12
La característica
Build
está en desuso en favor del formato.sbt
PR 2530 implementa esa depreciación.
" Apéndice: definición de compilación de .scala
" ha sido actualizado.
Cuando se están compilando .sbt
s, están antes de ese tipo de fusión con los archivos .scala
dentro del directorio del project
. No se pueden usar en tareas recursivas, es decir, no se puede personalizar sbt
desde sbt
, por ejemplo. Para obtener información más detallada, considere leer la sección relacionada con la documentación de sbt: http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def.html#sbt-vs-scala-definition
Para dar un breve ejemplo, este build.sbt
:
name := "hello"
version := "1.0"
es una notación abreviada más o menos equivalente a este 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 archivo .sbt
también puede incluir .sbt
, lazy val
y def
s (pero no los object
ni las class
).
Consulte el documento de SBT llamado "definición de compilación .scala" , particularmente la sección "Relacionar build.sbt to Build.scala".
Considere una definición de compilación .scala
si está haciendo algo complicado en el que desea la total expresividad de Scala.