sbt es una herramienta de compilación de código abierto para proyectos Scala y Java , similar a Maven y Ant de Apache .
Autor (es) original (es) | Mark Harrah |
---|---|
Desarrollador (es) | Lightbend y la comunidad |
Lanzamiento estable | |
Repositorio | |
Escrito en | Scala |
Sistema operativo | Multiplataforma |
Plataforma | Java |
Tipo | Automatización de construcción |
Licencia | Licencia BSD |
Sitio web | scala-sbt |
Sus principales características son:
- Soporte nativo para compilar código Scala e integrarse con muchos marcos de prueba Scala
- Compilación, prueba e implementación continuas
- Pruebas y compilación incrementales (solo se vuelven a compilar las fuentes modificadas, solo se vuelven a ejecutar las pruebas afectadas, etc.)
- Construya descripciones escritas en Scala usando un DSL
- Gestión de dependencias mediante Apache Ivy (que admite repositorios en formato Maven)
- Integración con el intérprete de Scala para una rápida iteración y depuración
- Soporte para proyectos mixtos Java / Scala
sbt es la herramienta de construcción de facto en la comunidad Scala, [3] utilizada por el marco web Lift [4] y Play Framework .
El medio comercial de Scala, Lightbend Inc. , ha llamado a sbt "posiblemente la mejor herramienta para construir proyectos de Scala", diciendo que sus dos características más destacadas son la compilación incremental y un shell interactivo. [5] Cuando se ingresa al modo de compilación continua, se crea una instancia del compilador de Scala solo una vez, lo que elimina los costos de inicio posteriores, y se realiza un seguimiento de los cambios en el archivo fuente para que solo se recompilen las dependencias afectadas. La consola interactiva permite modificar la configuración de compilación sobre la marcha e ingresar a Scala REPL junto con todos los archivos de clase del proyecto. [6] La popularidad de la compilación incremental ha llevado a Typesafe a extraer esta característica en forma de un componente independiente llamado Zinc. [5]
sbt ya se había retroalimentado antes en la biblioteca estándar de Scala, cuando se adoptó su API de proceso en Scala 2.9. [7]
Historia
sbt fue anunciado públicamente por primera vez el 18 de diciembre de 2008 por Mark Harrah, su autor original. Inicialmente era una abreviatura que significaba "Simple Build Tool", pero ahora se conoce simplemente como "sbt". [8]
Construir archivos
Una compilación sbt se puede definir usando un .sbt
archivo [9] A continuación se muestra un ejemplo de build.sbt
definición de compilación:
val scalaTest = "org.scalatest" %% "scalatest" % "3.2.7" val akkaVersion = "2.6.13" val akkaActor = "com.typesafe.akka" %% "akka-actor" % akkaVersion val akkaCluster = " com.typesafe.akka " %% " akka-cluster " % akkaVersion// Establezca la versión de Scala utilizada por esta compilación en 2.13.5. ThisBuild / scalaVersion : = "2.13.5" ThisBuild / version : = "0.1.0-SNAPSHOT" ThisBuild / organization : = "com.example"lazy val root = ( proyecto en archivo ( "." )) . agregado ( helloCore ) . depende de ( helloCore ) . settings ( name : = "Hello" , // Agregar una dependencia única, para las pruebas. libraryDependencies + = scalaTest % Test )lazy val helloCore = ( proyecto en archivo ( "núcleo" )) . settings ( name : = "Hello Core" , libraryDependencies + = scalaTest % Test , // Agregar múltiples dependencias. libraryDependencies ++ = List ( akkaActor , akkaCluster ) )
Uso de ejemplo
sbt puede invocarse para cada comando de compilación, o puede entrar en modo interactivo si no se da ningún comando. Para limpiar los productos de construcción de la construcción actual:
$ sbt limpio
Se pueden utilizar varios comandos en la misma línea. Para ejecutar una única prueba denominada "Foo" y luego publicar los archivos jar exportados:
$ SBT "testOnly Foo" publicar
Extensibilidad e integración
La funcionalidad de sbt se puede ampliar a través de una arquitectura de complementos. [10] Se creó un sitio web dedicado para los complementos aportados por la comunidad, que cubren varias áreas como la firma, el empaquetado, la publicación y liberación de artefactos, la conexión a otros servicios como blogs y bases de datos, o la integración con otras tecnologías como la implementación en Android. plataforma. [11]
Hay complementos para crear automáticamente archivos de proyecto para los IDE de Eclipse e IntelliJ IDEA . Por otro lado, un complemento IntelliJ IDEA permite que la consola sbt se integre en IDEA, y los proyectos pueden optar por utilizar sbt para la construcción.
Comparación y crítica
Como ocurre con la mayoría de las herramientas de software, sbt ha encontrado defensores y críticos. A menudo se compara con Apache Maven , que es una herramienta de compilación estándar en el mundo Java. En particular, el lenguaje específico del dominio utilizado para los archivos de compilación sbt ha atraído críticas por ser críptico en comparación con el enfoque declarativo puro de los archivos XML de Maven . Además, se introdujo un cambio incompatible en el formato y diseño del archivo con el salto de versión de 0.7 a 0.10. Debido a que la madurez de Maven y sbt es bastante joven, también se ha dicho que Maven proporciona una mayor cantidad de complementos y que falta la documentación de sbt, aunque otros dicen que la calidad de la documentación está mejorando. [12]
El proyecto sbt utiliza sbt para construirse a sí mismo, y considera que el dogfooding es una característica positiva. Para el proyecto Debian , sin embargo, eso se considera una dependencia circular , que tratan de minimizar. Como resultado, sbt aún no está en Debian. [13]
Ver también
- Lista de software de automatización de compilación
Referencias
- ^ [1]
- ↑ eed3si9n (4 de abril de 2021). "Anunciar: sbt 1.5.0" . eed3si9n.com . Consultado el 5 de abril de 2021 .
- ^ Repositorios públicos alojados en github que mencionan sbt
- ^ Introducción a Lift
- ^ a b "Compilación incremental y zinc" . blog de typesafe. 13 de agosto de 2012 . Consultado el 22 de agosto de 2012 .
- ^ Goldin, Evgeny. "sbt Scala Build Tool" . Consultado el 7 de mayo de 2012 .
- ^ "Scala 2.9.0 final" . 12 de mayo de 2011 . Consultado el 22 de agosto de 2012 .
- ^ Preguntas frecuentes
- ^ sbt: definición de compilación .sbt
- ^ "Complementos" . sbt . Consultado el 17 de octubre de 2014 .
- ^ "Complementos de la comunidad sbt" . Consultado el 17 de octubre de 2014 .
- ^ Coda Hale (29 de noviembre de 2011). "El resto de la historia" . Consultado el 22 de agosto de 2012 .Esta es una entrada de blog que da contexto a un correo electrónico vinculado en el que se describen los problemas con sbt.
- ^ "Registros de informes de errores de Debian - # 639910, RFP: herramienta de construcción simple - para proyectos scala y java" . Consultado el 28 de junio de 2015 ., incluye conversación con un desarrollador de sbt.
enlaces externos
- Página web oficial