pom.xml
📌 ¿Qué es el pom.xml en Maven?¶
El archivo pom.xml (Project Object Model) es el corazón de cualquier proyecto Maven. Es un archivo XML que define la configuración y la estructura del proyecto, incluyendo:
✔ Coordenadas del proyecto (identificación única).
✔ Dependencias (librerías externas necesarias).
✔ Fases y plugins (configuración del proceso de construcción).
✔ Propiedades y configuración general.
✔ Gestión de repositorios (locales/remotos).
Maven lee el pom.xml para ejecutar la construcción del proyecto de manera automática, sin necesidad de escribir scripts de compilación manualmente.
📌 Estructura básica de pom.xml¶
<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>
<!-- 📌 Coordenadas del proyecto -->
<groupId>com.ejemplo</groupId>
<artifactId>mi-proyecto</artifactId>
<version>1.0.0</version>
<!-- 📌 Propiedades globales -->
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<!-- 📌 Dependencias (librerías externas) -->
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.11.4</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 📌 Configuración de plugins -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
📌 Explicación de las secciones del pom.xml¶
1️⃣ Coordenadas del Proyecto¶
Estas etiquetas identifican de forma única un proyecto Maven:
<groupId>com.ejemplo</groupId> <!-- Organización o empresa -->
<artifactId>mi-proyecto</artifactId> <!-- Nombre del proyecto -->
<version>1.0.0</version> <!-- Versión del proyecto -->
➡ Esto define el artefacto Maven generado, como:
com.ejemplo:mi-proyecto:1.0.0
2️⃣ Propiedades¶
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
✔ Permite definir valores reutilizables en el pom.xml.
✔ Aquí se especifica que el código debe compilarse con Java 11.
3️⃣ Dependencias (librerías externas)¶
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.11.4</version>
<scope>test</scope>
</dependency>
</dependencies>
✔ Agrega librerías externas necesarias para el proyecto.
✔ Ejemplo: La dependencia JUnit 5.11.4 permite ejecutar pruebas unitarias.
✔ El atributo scope="test" indica que esta dependencia solo se usa en pruebas.
➡ Cuando agregamos una dependencia, Maven la descarga automáticamente desde Maven Central Repository y la almacena en ~/.m2/repository/.
4️⃣ Configuración de Plugins¶
Los plugins en Maven permiten ejecutar tareas específicas en diferentes fases del ciclo de vida.
Ejemplo: Plugin de compilación (maven-compiler-plugin)¶
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
✔ Se usa para compilar código Java.
✔ Define que la versión de Java es 11.
✔ Se ejecuta automáticamente en la fase compile de Maven.
Ejemplo: Plugin para ejecutar pruebas (maven-surefire-plugin)¶
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.2</version>
</plugin>
✔ Se ejecuta en la fase test.
✔ Permite ejecutar pruebas con JUnit.
5️⃣ Configuración de Construcción (<build>)¶
Dentro de la etiqueta <build>, podemos modificar cómo se genera el proyecto:
<build>
<plugins>
<!-- Aquí van los plugins -->
</plugins>
</build>
✔ Define los plugins que se ejecutarán en cada fase.
✔ Personaliza el proceso de construcción del proyecto.
📌 ¿Para qué sirve pom.xml?¶
✔ 📌 Define la estructura del proyecto y sus dependencias.
✔ 📌 Automatiza la compilación, empaquetado y pruebas.
✔ 📌 Evita incluir manualmente archivos .jar, ya que Maven los descarga automáticamente.
✔ 📌 Permite configurar fases y plugins específicos para tareas como pruebas, empaquetado y despliegue.
✔ 📌 Facilita el uso de diferentes entornos de desarrollo con versiones consistentes de dependencias.
📌 Ejemplo de uso en la práctica¶
Si necesitas compilar y probar tu proyecto Maven, Maven usará pom.xml para saber qué hacer.
Ejemplo de ejecución:
mvn compile
✔ Maven buscará en pom.xml qué dependencias necesita.
✔ Descargará automáticamente cualquier .jar faltante.
✔ Compilará el código con el maven-compiler-plugin.
Si ejecutamos:
mvn test
✔ Ejecutará las pruebas usando maven-surefire-plugin y JUnit.
Si ejecutamos:
mvn package
✔ Empaquetará el proyecto en un .jar o .war en la carpeta target/.
📌 Resumen¶
📌 pom.xml es el archivo central de configuración de Maven.
📌 Define coordenadas, dependencias, plugins y procesos de construcción.
📌 Maven usa pom.xml para automatizar la compilación, pruebas y empaquetado.
📌 Evita la necesidad de configurar manualmente el entorno.