sbt (originalmente simple build tool , actualmente sin significado alguno [ 4 ] ) es una herramienta de compilación de código abierto que permite compilar proyectos Java , Scala y Kotlin . Su objetivo es simplificar el proceso de construcción, compilación , prueba y empaquetado de aplicaciones, bibliotecas y frameworks. sbt es altamente adaptable, lo que permite a los desarrolladores personalizar el proceso de compilación según las necesidades específicas de su proyecto.
sbt proporciona una amplia gama de características para que el proceso de creación y gestión de proyectos Scala sea fácil y eficiente. [ 5 ] Algunas de las características clave incluyen:
- Gestión de dependencias: Gracias a su capacidad para descargar y gestionar automáticamente las dependencias del proyecto, sbt facilita el uso de bibliotecas y marcos de trabajo externos.
- La compilación incremental ' :' sbt puede recompilar solo las partes del código que han cambiado, lo que resulta en un ahorro de tiempo significativo durante el ciclo de desarrollo.
- Proceso de compilación personalizable: sbt es altamente personalizable, lo que permite a los desarrolladores definir ajustes de compilación personalizados y configurar el proceso de compilación para que se ajuste a los requisitos únicos de sus proyectos.
- Ecosistema de complementos : sbt cuenta con un ecosistema de complementos que mejora su funcionalidad, incorporando características adicionales como comprobaciones de calidad del código, automatización de la implementación e informes de cobertura de pruebas. El desarrollo e integración de nuevos complementos cuenta con pleno apoyo y se fomenta.
- Compilación y pruebas continuas : Con sbt , los desarrolladores pueden configurar el sistema para que vuelva a compilar y ejecutar las pruebas automáticamente cada vez que se modifique un archivo fuente.
- Compilaciones multiproyecto: Para los desarrolladores que trabajan en varios proyectos Scala, sbt ofrece funciones útiles para gestionarlos dentro de una única compilación.
- Shell interactiva : sbt viene equipado con una shell interactiva, que proporciona a los desarrolladores un método conveniente para ejecutar tareas y comandos a lo largo del proceso de desarrollo.
- Ejecución de tareas en paralelo: sbt puede ejecutar tareas en paralelo, lo que acelera los tiempos de compilación para proyectos grandes.
- Integración con IDE: Para optimizar la experiencia de desarrollo, sbt se integra sin problemas con entornos de desarrollo integrados (IDE) populares, como IntelliJ IDEA y Visual Studio Code .
sbt es la herramienta de compilación de facto en la comunidad Scala, [ 6 ] utilizada, por ejemplo, por los compiladores de Scala 2 y Scala 3, [ 7 ] [ 8 ] Play Framework y Lichess , un popular servidor de ajedrez. El proyecto sbt se "arranca" — utiliza sbt para compilarse a sí mismo.
Historia
sbt fue lanzado originalmente como un proyecto de código abierto por Mark Harrah en 2008. [ 9 ] A lo largo de los años, ha evolucionado significativamente a través de numerosas versiones, cada una de las cuales introdujo nuevas características, correcciones de errores y mejoras. Aquí hay una descripción general de las versiones más importantes, junto con los cambios e innovaciones clave que introdujeron: [ 10 ]
- sbt 0.3.2 (2008): Esta fue la primera versión oficial de sbt . Introdujo características rudimentarias como la definición de proyectos, la gestión de dependencias y la compilación.
- sbt 0.7 (2009): Estableció el marco básico para la construcción y gestión de proyectos Scala. Entre sus características clave se incluían la compilación incremental, la gestión de dependencias y la ejecución de tareas sencilla.
- sbt 0.10 (2011): Introdujo una revisión significativa de la sintaxis de definición de compilación, haciéndola más expresiva y flexible. También se mejoraron el rendimiento, la gestión de dependencias y la configuración.
- sbt 0.12 (2012): Soporte mejorado para proyectos multimodulares, capacidad para definir configuraciones personalizadas y desarrollo de complementos simplificado.
- sbt 0.13 (2013): Centrada en la usabilidad y el rendimiento. Esta versión introdujo Activator, [ 11 ] una herramienta web para crear y gestionar proyectos. Otras características incluían la compilación incremental de macros, una mejor gestión de los errores de definición de compilación y diversas optimizaciones de rendimiento. La versión 0.13 siguió siendo la versión principal de sbt durante los siguientes cuatro años.
- sbt 1.0 (2017): Introdujo cambios sustanciales en el código fuente de sbt , centrándose en el rendimiento y la estabilidad, pero también intentó mantener la compatibilidad con versiones anteriores en la medida de lo posible. Las nuevas características incluyeron una sintaxis de barra unificada para definir tareas y configuraciones, una gestión de dependencias mejorada y Scala 2.12 como la versión del lenguaje utilizada para las definiciones de compilación. Además, el cambio al nuevo compilador incremental Zinc 1.0 mejoró aún más el rendimiento de la compilación incremental. [ 12 ]
- sbt 1.1 (2018): Esta versión lanzó el servidor sbt , lo que permitió que los IDE y otras herramientas interactuaran con sbt a través del Protocolo de Servidor de Lenguaje (LSP). También añadió soporte de compilación cruzada para Scala.js [ 13 ] y Scala Native [ 14 ] y mejoró el rendimiento de varias tareas.
- sbt 1.3 (2019): Esta versión mejoró significativamente la experiencia del usuario al acelerar la resolución de dependencias mediante la adopción de Coursier [ 15 ] como gestor de dependencias predeterminado. Otras mejoras incluyeron optimizaciones en el mecanismo de almacenamiento en caché de compilación y compatibilidad con JDK 11.
- sbt 1.5 (2021): Se agregó soporte para Scala 3. También se realizaron mejoras en el soporte de BSP (Build Server Protocol), [ 16 ] lo que permite una mejor integración con los IDE.
- sbt 1.8 (2022): Esta versión trajo actualizaciones para Coursier y mejoró la compatibilidad con Ivy.
- sbt 1.9 (2023): Más actualizaciones para Coursier y un menú basado en texto para facilitar la creación de nuevos proyectos.
Archivos de compilación
Una compilación de sbt se puede definir usando un .sbtarchivo [ 17 ]. A continuación se muestra un ejemplo de build.sbtdefinición de compilación:
val scalaTest = "org.scalatest" %% "scalatest" % "3.2.14" val akkaVersion = "2.6.20" val akkaActor = "com.typesafe.akka" %% "akka-actor" % akkaVersion val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % akkaVersion// Establece la versión de Scala utilizada por esta compilación a 2.13.10. ThisBuild / scalaVersion := "2.13.10" ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / organization := "com.example"lazy val root = ( proyecto en archivo ( "." )) . aggregate ( helloCore ) . dependsOn ( helloCore ) . settings ( nombre := "Hello" , // Agregar una sola dependencia, para pruebas. libraryDependencies += scalaTest % Test )lazy val helloCore = ( proyecto en archivo ( "core" )) . configuración ( nombre := "Hello Core" , libraryDependencies += scalaTest % Test , // Agregar múltiples dependencias. libraryDependencies ++= List ( akkaActor , akkaCluster ) )Ejemplo de uso
sbt puede invocarse para cada comando de compilación, o puede entrar en modo interactivo si no se proporciona ningún comando. Para limpiar los productos de compilación de la compilación actual:
$ sbt limpio Se pueden usar varios comandos en la misma línea. Para ejecutar una sola prueba llamada "Foo" y luego publicar los archivos JAR exportados:
$ sbt "testOnly Foo" publicar Extensibilidad e integración
La funcionalidad de sbt se puede extender a través de una arquitectura de complementos. [ 18 ] Los complementos aportados por la comunidad cubren áreas como la firma, el empaquetado, la publicación y la liberación de artefactos, la conexión con otros servicios como blogs y bases de datos, o la integración con otras tecnologías.
Tanto IntelliJ IDEA como VS Code son compatibles con sbt a través de sus complementos de Scala. En ambos IDE, es posible crear un nuevo proyecto con archivos de compilación sbt iniciales , así como, si el proyecto ya incluye un archivo de compilación sbt , este puede utilizarse para generar la configuración del proyecto para el IDE en cuestión. [ 19 ]
Comparaciones
Las principales alternativas a sbt entre las herramientas de compilación son Gradle y Apache Maven , ambas herramientas consolidadas para proyectos desarrollados en la plataforma JVM. En el ecosistema de Scala, otra herramienta de compilación popular es Mill. [ 20 ] La elección entre sbt , Gradle, Apache Maven y Mill depende de los requisitos específicos de tu proyecto y de tu familiaridad con las herramientas. Si trabajas principalmente con Scala, sbt o Mill podrían ser más adecuadas, mientras que si trabajas con varios lenguajes o tecnologías, alguna de las otras dos podría ser una mejor opción.
Véase también
Referencias
- ↑ "Lightbend transfiere la propiedad de sbt al Scala Center" . scala-lang.org . 25 de agosto de 2023. Consultado el 8 de marzo de 2024 .
- ↑ eed3si9n (2024-11-03). "Releases" . github.com . Consultado el 2023-11-06 .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace ) - ↑ eed3si9n (2024-11-03). "1.10.5" . github.com . Consultado el 2023-11-06 .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace ) - ↑ "Manual de referencia de sbt: preguntas frecuentes" . www.scala-sbt.org . Consultado el 15 de junio de 2023 .
- ↑ "Manual de referencia de sbt — Manual de referencia de sbt" . www.scala-sbt.org . Consultado el 15 de junio de 2023 .
- ↑ "Construyamos mejor software, juntos" . GitHub . Consultado el 15 de junio de 2023 .
- ↑ ¡ Bienvenido! , El lenguaje de programación Scala, 14 de junio de 2023 , consultado el 15 de junio de 2023
- ↑ Dotty , Laboratorio de Métodos de Programación EPFL, 14 de junio de 2023 , consultado el 15 de junio de 2023
- ↑ "Manual de referencia de sbt — Guía del desarrollador (En desarrollo)" . www.scala-sbt.org . Consultado el 15 de junio de 2023 .
- ↑ "Versiones · sbt/sbt" . GitHub . Consultado el 15 de junio de 2023 .
- ↑ "Typesafe Activator 1.3.0 lanzado: Contiene nuevo servidor sbt e interfaz de usuario | @lightbend" . Lightbend . Consultado el 15 de junio de 2023 .
- ↑ "Acelera los tiempos de compilación con Zinc 1.0" . www.scala-lang.org . 3 de noviembre de 2017. Consultado el 15 de junio de 2023 .
- ↑ "Scala.js" . Scala.js . Consultado el 15 de junio de 2023 .
- ↑ "Scala Native — Documentación de Scala Native 0.4.14" . scala-native.org . Consultado el 15 de junio de 2023 .
- ↑ "Coursier · Pure Scala Artifact Fetching" . get-coursier.io . Consultado el 15/06/2023 .
- ↑ "Build Server Protocol" . build-server-protocol.github.io . Consultado el 15 de junio de 2023 .
- ↑ sbt: definición de compilación .sbt
- ↑ "Plugins" . sbt . Consultado el 17 de octubre de 2014 .
- ↑ "¿Cómo crear un proyecto SBT con IntelliJ IDEA?" . Stack Overflow . Consultado el 5 de abril de 2026 .
- ↑ "Introducción a Mill :: Mill" . mill-build.com . Consultado el 15 de junio de 2023 .
Enlaces externos
- Automatización de compilaciones
- Herramientas de compilación
- Herramientas de desarrollo Java
- Scala (lenguaje de programación)
- Software libre programado en Scala.
- Software que utiliza la licencia BSD.