Maven / Gradle para Java: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Qué son Maven y Gradle y para qué sirven?

\n\n

En el mundo del desarrollo Java existe un problema fundamental: ¿cómo gestionar las dependencias (bibliotecas externas), automatizar la compilación del proyecto, ejecutar pruebas y crear los artefactos finales (JAR, WAR)? Descargar archivos JAR manualmente y configurar el classpath es un camino sin salida, especialmente para proyectos con decenas de dependencias.

\n\n

Maven y Gradle son los dos sistemas de compilación automática (build automation tools) más populares para Java. Resuelven las siguientes tareas:

\n
    \n
  • Gestión de dependencias: descarga automática de bibliotecas desde repositorios centrales (Maven Central, Google Maven) y sus dependencias transitivas.
  • \n
  • Estandarización del ciclo de vida: compilación, pruebas, empaquetado, despliegue: todo se ejecuta con comandos estándar.
  • \n
  • Reproducibilidad de las compilaciones: cualquier desarrollador puede compilar el proyecto con un solo comando, teniendo solo el código fuente y el archivo de configuración.
  • \n
  • Integración con CI/CD: Jenkins, GitLab CI, GitHub Actions ejecutan fácilmente compilaciones de Maven/Gradle.
  • \n
\n\n

Maven utiliza XML (archivo pom.xml) y un ciclo de vida estricto. Gradle utiliza Groovy o Kotlin DSL (archivo build.gradle o build.gradle.kts), es más flexible y rápido gracias a la compilación incremental. En este artículo veremos ambas herramientas, pero nos centraremos en Gradle como la solución más moderna.

\n\n

Instalación de Maven y Gradle

\n\n

Instalación de Maven

\n

Maven no se instala a través de pip o npm. Debe descargarse desde el sitio web oficial o instalarse mediante el gestor de paquetes del sistema operativo.

\n
# macOS (Homebrew)\nbrew install maven\n\n# Ubuntu/Debian\nsudo apt-get update\nsudo apt-get install maven\n\n# Windows (Chocolatey)\nchoco install maven\n\n# Verificar la instalación\nmvn --version
\n\n

Instalación de Gradle

\n

Gradle también se instala por separado. Se recomienda usar SDKMAN! para gestionar las versiones.

\n
# Instalar SDKMAN (si aún no está instalado)\ncurl -s "https://get.sdkman.io" | bash\nsource "$HOME/.sdkman/bin/sdkman-init.sh"\n\n# Instalar la última versión de Gradle\nsdk install gradle\n\n# Verificar\ngradle --version\n\n# Alternativa: descargar desde https://gradle.org/releases/ y descomprimir
\n\n

Inicio rápido: Creación de un proyecto

\n\n

Creación de un proyecto con Maven

\n

Maven puede generar un esqueleto de proyecto mediante arquetipos (archetypes).

\n
# Crear un proyecto Java simple\nmvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false\n\n# Ir a la carpeta del proyecto\ncd my-app\n\n# Compilar el proyecto\nmvn clean package\n\n# Ejecutar (si la clase main está configurada)\njava -cp target/my-app-1.0-SNAPSHOT.jar com.example.App
\n\n

Creación de un proyecto con Gradle

\n

Gradle utiliza el comando init para crear un esqueleto.

\n
# Crear una carpeta e inicializar el proyecto\nmkdir my-gradle-app\ncd my-gradle-app\ngradle init\n\n# Seleccionar: 2: application -> 3: Java -> 1: Groovy DSL -> 2: JUnit Jupiter -> Enter\n\n# Compilar y ejecutar\n./gradlew build\n./gradlew run
\n\n

Después de esto, tendrá una estructura de proyecto con los archivos build.gradle (o pom.xml para Maven) y las carpetas src/main/java y src/test/java.

\n\n

Métodos/Funciones principales (Gradle DSL)

\n

Veamos las construcciones clave de Gradle (Groovy DSL). Para Maven son análogas, pero con sintaxis XML.

\n\n

1. dependencies { ... }

\n

Qué hace: Define las dependencias del proyecto: bibliotecas externas que se descargarán de los repositorios.

\n

Parámetros: Dentro del bloque se especifican las configuraciones (implementation, testImplementation, compileOnly, etc.) y las coordenadas

Recommendations