CodeGym /Cursos /Módulo 5. Spring /Análisis de los fundamentos de Maven y Gradle para gestio...

Análisis de los fundamentos de Maven y Gradle para gestionar dependencias en proyectos Spring

Módulo 5. Spring
Nivel 1 , Lección 7
Disponible

Cuando desarrollas una aplicación, tarde o temprano vas a necesitar librerías — ya sea Spring Framework, Logback para logging, o alguna cosa exótica como una librería para trabajar con grafos. Buscar, descargar, incluir y actualizar esas librerías tú mismo puede convertir tu desarrollo en una pesadilla aburrida. Y además existe el riesgo de encontrarte con versiones incompatibles.

Surge la pregunta lógica: ¿cómo automatizar la gestión de dependencias y la build del proyecto?

Aquí te echan una mano Maven y Gradle. Estas herramientas:

  • Facilitan añadir dependencias.
  • Ofrecen un manejo cómodo de las versiones de las librerías.
  • Permiten configurar el proceso de build del proyecto.
  • Ayudan a resolver problemas de compatibilidad.

Maven: conociendo al abuelo de las builds en Java

Maven — es una herramienta de build (build tool) para proyectos Java, diseñada para estandarizar y automatizar el proceso de build. Usa ficheros XML (pom.xml) para la configuración y la gestión de dependencias.

Tareas principales de Maven:

  • Gestión de dependencias a través de repositorios.
  • Compilación y build del proyecto.
  • Generación de documentación.
  • Ejecución de tests y generación de reports.

Estructura del archivo pom.xml

En Maven se usa el archivo pom.xml (Project Object Model), que describe el proyecto y sus dependencias. Aquí tienes un ejemplo sencillo de pom.xml para una aplicación que usa Spring Boot:


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <!-- Información principal del proyecto -->
  <groupId>com.example</groupId> <!-- Identificador único del proyecto -->
  <artifactId>spring-demo</artifactId> <!-- Nombre del artefacto -->
  <version>1.0-SNAPSHOT</version> <!-- Versión -->

  <!-- Dependencias del proyecto -->
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>3.0.0</version>
    </dependency>
  </dependencies>

  <!-- Plugins para la compilación -->
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

Si el pom.xml te parece un poco lioso, no te preocupes. Con el tiempo será como tu combinación de teclado favorita — familiar e intuitiva.

Gestión de dependencias

El secreto del éxito de Maven es la gestión centralizada de dependencias a través de repositorios:

  • Repositorio Central de Maven (https://repo.maven.apache.org/maven2) — la fuente principal de librerías.
  • Repositorio local — el directorio en tu máquina donde Maven guarda las librerías descargadas.
  • Repositorio corporativo/privado — por ejemplo, Nexus o Artifactory.

Cuando añades una dependencia en el pom.xml, Maven: 1. Comprueba si la librería está en el repositorio local. 2. Si no está, la descarga desde el repositorio central. 3. Te saca de la depresión porque todo ha funcionado 😊.


Gradle: el rival moderno de Maven

Gradle — es una herramienta de build más joven y flexible, creada para resolver las mismas tareas que Maven. A diferencia de Maven, Gradle usa una configuración más concisa basada en Groovy o Kotlin DSL, lo que lo hace popular entre desarrolladores modernos.

Principales ventajas de Gradle:

  • Flexibilidad: puedes afinar el proceso de build al detalle.
  • Velocidad: gracias a incremental builds y al daemon el proceso de build se acelera mucho.
  • Sintaxis más clara (especialmente si el XML te da alergia).

Estructura del archivo build.gradle

Mira cómo sería la configuración equivalente para una aplicación Spring, pero en Gradle:


plugins {
    id 'org.springframework.boot' version '3.0.0'
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
    id 'java'
}

group = 'com.example'
version = '1.0-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter:3.0.0'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Como ves, la sintaxis de Gradle es más concisa y más fácil de asimilar, sobre todo si estás empezando con las herramientas de build.


Maven vs Gradle: ¿qué elegir?

Característica Maven Gradle
Flexibilidad XML con estructura rígida Alta flexibilidad gracias al DSL
Velocidad de build Más lento Más rápido gracias a incremental builds y caché
Curva de aprendizaje Un poco más alta Sintaxis concisa y fácil de entender
Popularidad Muy popular, especialmente en proyectos legacy Está ganando terreno en proyectos modernos
Soporte Amplio, mucha documentación Ideal para aplicaciones nuevas

Si trabajas con proyectos en Spring Boot y te va la sencillez, Gradle puede ser tu elección. Pero si mantienes proyectos antiguos o trabajas en un equipo donde ya se usa Maven, no hay ningún problema en seguir con él.


Práctica: configurar un proyecto Spring Boot con Maven y Gradle

Maven

  1. Crea un nuevo proyecto vía Spring Initializr: https://start.spring.io.
  2. Elige Maven y dependencias, por ejemplo, Spring Web.
  3. Importa el proyecto en tu IDE favorita y ejecútalo.
  4. Abre el pom.xml, añade otra dependencia (por ejemplo, Lombok):
    
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.28</version>
    </dependency>
    
  5. Actualiza el proyecto y asegúrate de que todo funciona.

Gradle

  1. Crea el proyecto vía Spring Initializr, seleccionando Gradle.
  2. Importa el proyecto en tu IDE.
  3. Abre el build.gradle y añade la dependencia Lombok:
    
    dependencies {
        implementation 'org.projectlombok:lombok:1.18.28'
    }
    
  4. Pulsa el botón Refresh Gradle Project en tu IDE y arranca la aplicación.

Enlaces a la documentación oficial


El mundo de Maven y Gradle te abrirá un montón de posibilidades para automatizar y simplificar el trabajo en proyectos. En la siguiente clase repasaremos con más detalle la estructura de las aplicaciones Spring Boot y aprenderemos a gestionar su configuración. ¡Vamos! 🚀

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION