0Pricing
Scala for Backend Engineering & Functional Programming · Lección

Compilaciones de varios proyectos y despliegue

Configure y gestione compilaciones de SBT con varios proyectos para aplicaciones grandes y prepárelas para el despliegue.

Compilaciones de varios proyectos y despliegue es una lección gratuita de Scala for Backend Engineering & Functional Programming en CoddyKit. Esta es la lección 3 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 compilaciones multiproyecto?

A medida que crecen las aplicaciones de Scala, gestionar todo el código en un único proyecto puede resultar difícil. Las compilaciones multiproyecto ayudan a organizar el código.

Permiten:

  • Separar distintos módulos (por ejemplo, lógica principal, API y utilidades).
  • Gestionar claramente las dependencias entre estos módulos.
  • Aplicar opciones específicas a partes concretas de la aplicación.

Este enfoque mejora la modularidad y la facilidad de mantenimiento.

Definición de varios proyectos

En SBT, se definen varios proyectos dentro del archivo build.sbt principal. Cada proyecto suele ser un lazy val.

El proyecto raíz normalmente agrega estos subproyectos o depende de ellos.

Esta es una configuración básica para un proyecto raíz y dos subproyectos:

lazy val root = project
  .in(file("."))
  .aggregate(core, api)

lazy val core = project
  .in(file("core"))

lazy val api = project
  .in(file("api"))

Estructura de directorios de los subproyectos

En una compilación multiproyecto, cada subproyecto suele encontrarse en su propio directorio, en el nivel raíz del proyecto.

La estructura estándar es la siguiente:

  • my-app/ (directorio del proyecto raíz)
    • build.sbt (archivo de compilación principal)
    • project/ (archivos de definición de compilación de SBT)
    • core/ (directorio del subproyecto 'core')
      • src/ (código fuente de 'core')
    • api/ (directorio del subproyecto 'api')
      • src/ (código fuente de 'api')

Ejemplo de código de un subproyecto

Cada subproyecto puede contener sus propios archivos de código fuente de Scala. Por ejemplo, nuestro proyecto core podría incluir una utilidad sencilla.

Intente ejecutar este ejemplo desde el proyecto core:

package com.coddykit.core

object Greeter {
  def greet(name: String): String = s"Hello, $name!"
}

object CoreApp {
  def main(args: Array[String]): Unit = {
    println(Greeter.greet("CoddyKit"))
  }
}

Dependencias entre proyectos

A menudo, un subproyecto necesita utilizar código de otro. Por ejemplo, su proyecto api podría necesitar el Greeter del proyecto core.

Declare estas dependencias mediante .dependsOn() en su build.sbt.

lazy val root = project
  .in(file("."))
  .aggregate(core, api)

lazy val core = project
  .in(file("core"))

lazy val api = project
  .in(file("api"))
  .dependsOn(core)

Compartir configuraciones comunes

Muchas configuraciones, como la versión de Scala o las dependencias comunes, pueden ser iguales en todos sus subproyectos.

Para evitar repetir código, puede definir un bloque commonSettings y aplicarlo a cada proyecto.

lazy val commonSettings = Seq(
  scalaVersion := "2.13.8",
  organization := "com.coddykit"
)

lazy val root = project
  .in(file("."))
  .aggregate(core, api)
  .settings(commonSettings)

lazy val core = project
  .in(file("core"))
  .settings(commonSettings)

lazy val api = project
  .in(file("api"))
  .dependsOn(core)
  .settings(commonSettings)

Agregar tareas

Cuando tiene un proyecto raíz que agrega varios subproyectos, ejecutar una tarea como compile en el proyecto raíz hará que se ejecute automáticamente en todos los subproyectos agregados.

Por ejemplo, escribir sbt compile en el directorio raíz compilará tanto core como api.

El método .aggregate() es fundamental para este comportamiento.

Empaquetar para el despliegue

Una vez compilada la aplicación, debe empaquetarla para desplegarla. Normalmente, esto significa crear un archivo JAR (Java Archive) ejecutable.

En las compilaciones de varios proyectos, normalmente querrá un único JAR que incluya todo el código del proyecto y sus dependencias. Esto se denomina «fat JAR» o «uber JAR».

SBT no crea fat JAR de forma predeterminada, pero los plugins pueden ayudarle.

Plugin sbt-assembly para fat JAR

El plugin sbt-assembly se utiliza ampliamente para crear fat JAR. Agrupa todas las clases compiladas y las dependencias en un único JAR ejecutable.

Primero, añada el plugin a project/plugins.sbt:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.0.0")

Empaquetado de varios proyectos

¿Cuál de las siguientes afirmaciones sobre el empaquetado de una aplicación Scala de varios proyectos para su despliegue es VERDADERA?

Resumen y próximos pasos

¡Ha aprendido a estructurar y administrar compilaciones de varios proyectos en SBT!

  • Hemos visto cómo definir subproyectos en build.sbt.
  • Ha aprendido a organizar directorios y administrar las dependencias entre proyectos con .dependsOn().
  • Hemos explicado cómo compartir configuraciones comunes y agregar tareas.
  • Por último, hemos explorado el empaquetado para el despliegue, específicamente mediante el plugin sbt-assembly para crear fat JAR.

Dominar las compilaciones de varios proyectos es fundamental para las aplicaciones Scala más grandes y complejas, ya que garantiza la modularidad y flujos de trabajo de desarrollo eficientes.

Preguntas frecuentes

¿La lección «Compilaciones de varios proyectos y despliegue» es gratis?

Sí — el texto completo de «Compilaciones de varios proyectos y despliegue» 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 «Compilaciones de varios proyectos y despliegue»?

Configure y gestione compilaciones de SBT con varios proyectos para aplicaciones grandes y prepárelas para el despliegue. 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 3 de 3.

¿Cuánto tiempo toma la lección «Compilaciones de varios proyectos y despliegue»?

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

  1. Configuración y fundamentos de proyectos SBT
  2. Gestión de dependencias y plugins
  3. Compilaciones de varios proyectos y despliegue
← Volver a Scala for Backend Engineering & Functional Programming