Introducción a SBT

SBT (Simple Build Tool) es una herramienta de construcción específica para Scala y Java. Es similar a otras herramientas de construcción como Maven y Gradle, pero está diseñada para ser más flexible y fácil de usar con proyectos de Scala. SBT permite compilar, probar y empaquetar proyectos de Scala de manera eficiente.

Características Clave de SBT

  • Compilación Incremental: Solo recompila los archivos que han cambiado.
  • Interactividad: Permite ejecutar comandos en una consola interactiva.
  • Integración con IDEs: Compatible con IntelliJ IDEA, Eclipse, y otros.
  • Gestión de Dependencias: Utiliza repositorios de Maven para gestionar dependencias.
  • Soporte para Plugins: Extensible mediante plugins para añadir funcionalidades adicionales.

Instalación de SBT

Requisitos Previos

  • Java Development Kit (JDK): Asegúrate de tener instalado JDK 8 o superior.

Instalación en Windows

  1. Descarga el instalador de SBT desde sbt download page.
  2. Ejecuta el instalador y sigue las instrucciones.

Instalación en macOS

  1. Usa Homebrew para instalar SBT:
    brew install sbt
    

Instalación en Linux

  1. Añade el repositorio de SBT:
    echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 99E82A75642AC823
    sudo apt-get update
    
  2. Instala SBT:
    sudo apt-get install sbt
    

Configuración de un Proyecto SBT

Crear un Proyecto SBT

  1. Crea un nuevo directorio para tu proyecto:
    mkdir my-first-sbt-project
    cd my-first-sbt-project
    
  2. Crea un archivo build.sbt en el directorio del proyecto con el siguiente contenido:
    name := "MyFirstSBTProject"
    
    version := "0.1"
    
    scalaVersion := "2.13.6"
    

Estructura del Proyecto

La estructura básica de un proyecto SBT es la siguiente:

my-first-sbt-project/
├── build.sbt
├── project/
│   └── build.properties
├── src/
│   ├── main/
│   │   ├── resources/
│   │   └── scala/
│   │       └── Main.scala
│   └── test/
│       ├── resources/
│       └── scala/

Archivo build.properties

Crea un archivo build.properties en el directorio project/ con el siguiente contenido:

sbt.version=1.5.5

Archivo Main.scala

Crea un archivo Main.scala en el directorio src/main/scala/ con el siguiente contenido:

object Main extends App {
  println("Hello, SBT!")
}

Comandos Básicos de SBT

Iniciar SBT

Para iniciar SBT, navega al directorio del proyecto y ejecuta:

sbt

Compilar el Proyecto

Para compilar el proyecto, usa el comando:

sbt compile

Ejecutar el Proyecto

Para ejecutar el proyecto, usa el comando:

sbt run

Ejecutar Pruebas

Para ejecutar las pruebas, usa el comando:

sbt test

Limpiar el Proyecto

Para limpiar los archivos compilados, usa el comando:

sbt clean

Gestión de Dependencias

Para añadir dependencias a tu proyecto, edita el archivo build.sbt y añade las dependencias en el formato siguiente:

libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.9" % Test

Ejemplo de Dependencias

name := "MyFirstSBTProject"

version := "0.1"

scalaVersion := "2.13.6"

libraryDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.2.9" % Test,
  "com.typesafe.akka" %% "akka-actor" % "2.6.14"
)

Plugins en SBT

SBT es extensible mediante plugins. Para añadir un plugin, edita el archivo project/plugins.sbt y añade el plugin en el formato siguiente:

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.8.0")

Ejercicio Práctico

Ejercicio 1: Crear un Proyecto SBT

  1. Crea un nuevo proyecto SBT siguiendo los pasos anteriores.
  2. Añade una dependencia a ScalaTest en el archivo build.sbt.
  3. Crea una clase Calculator en src/main/scala/ con un método add que sume dos números.
  4. Crea una prueba para la clase Calculator en src/test/scala/ usando ScalaTest.

Solución

Archivo build.sbt

name := "CalculatorProject"

version := "0.1"

scalaVersion := "2.13.6"

libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.9" % Test

Archivo Calculator.scala

class Calculator {
  def add(a: Int, b: Int): Int = a + b
}

Archivo CalculatorTest.scala

import org.scalatest.flatspec.AnyFlatSpec

class CalculatorTest extends AnyFlatSpec {
  "add" should "return the sum of two numbers" in {
    val calculator = new Calculator
    assert(calculator.add(2, 3) == 5)
  }
}

Conclusión

En esta sección, hemos aprendido sobre SBT, una herramienta de construcción poderosa y flexible para proyectos de Scala. Hemos cubierto la instalación, configuración de un proyecto, comandos básicos, gestión de dependencias y el uso de plugins. Además, hemos realizado un ejercicio práctico para reforzar los conceptos aprendidos. Con esta base, estarás preparado para gestionar y construir proyectos de Scala de manera eficiente.

© Copyright 2024. Todos los derechos reservados