Gestión de dependencias y plugins
Gestione bibliotecas externas, declare dependencias y utilice plugins de SBT para ampliar las funcionalidades de compilación.
Gestión de dependencias y plugins es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 2 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Scala for Backend Engineering & Functional Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Scala for Backend Engineering & Functional Programming incluye 3 lecciones en total.
¿Por qué usar bibliotecas externas?
Al crear proyectos de Scala, a menudo necesita funcionalidades que no forman parte del lenguaje principal. El registro, el acceso a bases de datos y los frameworks web son algunos ejemplos habituales.
En lugar de escribir todo ese código usted mismo, puede utilizar bibliotecas externas (también llamadas dependencias). Son paquetes de código ya escrito que otros desarrolladores han creado y compartido.
Añadir bibliotecas a build.sbt
SBT facilita la incorporación de estas bibliotecas externas. Puede declararlas en el archivo build.sbt mediante la opción libraryDependencies.
Esta es la sintaxis básica:
"org.group": el identificador de la organización o del grupo.% "artifact": el identificador del artefacto (el nombre de la biblioteca). Use%%para que las bibliotecas de Scala coincidan automáticamente con su versión de Scala.% "version": la versión concreta de la biblioteca que desea utilizar.
Ejemplo:
libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.32"Ámbitos de dependencias: Compile y Test
Es posible que las bibliotecas solo sean necesarias para partes concretas del proyecto. SBT utiliza ámbitos para gestionar esta situación.
compile(predeterminado): necesario para compilar y ejecutar el código principal.test: solo necesario para compilar y ejecutar el código de pruebas (por ejemplo, un framework de pruebas como ScalaTest).runtime: no es necesario durante la compilación, pero sí cuando se ejecuta la aplicación.
Puede especificar el ámbito de la siguiente manera:
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.16" % "test"Obtención automática de dependencias
Imagine que una biblioteca que utiliza, como un framework web, también utiliza otras bibliotecas. Estas se denominan dependencias transitivas.
SBT se encarga automáticamente de obtener todas estas dependencias indirectas. Cuando añade una biblioteca, SBT busca sus propias dependencias y también las descarga, para garantizar que el proyecto tenga todo lo necesario.
¡Así no tendrá que llevar un registro manual de decenas de bibliotecas!
Registro con SLF4J
Usemos una biblioteca de registro habitual, SLF4J (Simple Logging Facade for Java), junto con su implementación sencilla. Primero, añádala a su build.sbt:
libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.32"Ahora, ejecute el código de Scala que aparece a continuación para verlo en acción. Observe cómo importamos org.slf4j.LoggerFactory, que procede de nuestra nueva dependencia.
import org.slf4j.LoggerFactory
object Main {
private val logger = LoggerFactory.getLogger(getClass.getName)
def main(args: Array[String]): Unit = {
logger.info("Hello from a logged message!")
println("This is a standard print output.")
}
}Ampliación de SBT con plugins
Además de gestionar bibliotecas, el propio SBT puede ampliarse mediante plugins. Los plugins son archivos JAR especiales que añaden nuevos comandos u opciones a SBT.
Por ejemplo, existen plugins para empaquetar aplicaciones, implementarlas en servidores o incluso integrarlas con herramientas específicas, como formateadores de código.
Ayudan a automatizar tareas habituales y a agilizar el flujo de trabajo de desarrollo.
Declaración de plugins en plugins.sbt
A diferencia de las dependencias normales, que se incluyen en build.sbt, los plugins de SBT se declaran en un archivo especial: project/plugins.sbt. Este archivo se encuentra dentro del directorio project, en la raíz del proyecto de SBT.
La sintaxis es similar a la de las dependencias, pero se utiliza addSbtPlugin:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.1")Esto indica a SBT que descargue y habilite el plugin especificado para el proyecto.
Creación de un JAR completo con sbt-assembly
Un plugin muy popular es sbt-assembly. Crea un único «fat JAR» ejecutable que contiene el código de la aplicación y todas sus dependencias.
Primero, añada el plugin a project/plugins.sbt:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.1")Después de añadirlo, puede ejecutar sbt assembly desde la terminal para crear el JAR. El código de Scala que aparece a continuación es el que empaquetaría sbt-assembly.
object Main {
def main(args: Array[String]): Unit = {
println("This is a simple application.")
println("sbt-assembly would package this along with its dependencies into a single JAR.")
}
}Gestión de versiones y resolvers
A medida que el proyecto crece, gestionar muchas dependencias puede resultar complicado. Estos son algunos consejos:
- Versiones coherentes: use la misma versión de una biblioteca en todos los módulos para evitar conflictos.
- Resolvers: SBT obtiene las bibliotecas de repositorios (como Maven Central). Puede añadir resolvers personalizados si una biblioteca no se encuentra en los predeterminados.
De forma predeterminada, SBT utiliza repositorios públicos estándar. Para las bibliotecas privadas, debe especificar un resolver personalizado en build.sbt.
Ordene los pasos
Desea añadir una biblioteca externa nueva a su proyecto de Scala y utilizarla. Coloque los pasos siguientes en el orden correcto.
Resumen de la lección
¡Excelente trabajo! Ha aprendido a gestionar código externo en sus proyectos de Scala.
- Las dependencias (bibliotecas) se añaden a
build.sbtmediantelibraryDependencies. - SBT gestiona las dependencias transitivas y admite distintos ámbitos (como
compileytest). - Los plugins amplían la funcionalidad de SBT y se declaran en
project/plugins.sbtmedianteaddSbtPlugin.
Dominar la gestión de dependencias y plugins es fundamental para crear aplicaciones de Scala complejas y robustas de forma eficiente.
Preguntas frecuentes
¿La lección «Gestión de dependencias y plugins» es gratis?
Sí — el texto completo de «Gestión de dependencias y plugins» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Scala for Backend Engineering & Functional Programming, actualiza a CoddyKit PRO. El curso de Scala for Backend Engineering & Functional Programming incluye 3 lecciones en total.
¿Qué aprenderé en «Gestión de dependencias y plugins»?
Gestione bibliotecas externas, declare dependencias y utilice plugins de SBT para ampliar las funcionalidades de compilación. Practicas Scala for Backend Engineering & Functional Programming con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Scala for Backend Engineering & Functional Programming?
No se requiere experiencia previa. Scala for Backend Engineering & Functional Programming en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 3.
¿Cuánto tiempo toma la lección «Gestión de dependencias y plugins»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Scala for Backend Engineering & Functional Programming?
Sí. Cada lección de Scala for Backend Engineering & Functional Programming incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Configuración y fundamentos de proyectos SBT
- Gestión de dependencias y plugins
- Compilaciones de varios proyectos y despliegue