Encabezado 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>
xmlns, xsi y schemaLocation: Estas son declaraciones XML estándar que indican que este archivo sigue el formato de POM de Maven versión 4.0.0.
modelVersion: Es la versión del modelo de Maven, que en este caso es la 4.0.0. Esto es estándar para la mayoría de proyectos Maven.
Información básica del proyecto:
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<name>my-app</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
groupId: Identificador único de tu proyecto (generalmente coincide con el nombre de dominio de la empresa o equipo, en este caso com.mycompany.app).
artifactId: El nombre del proyecto o módulo. Aquí es my-app.
version: La versión del proyecto. En este caso, es 1.0-SNAPSHOT. El sufijo SNAPSHOT indica que esta versión está en desarrollo.
name: El nombre legible del proyecto, también my-app.
url: La
URL del proyecto, que aquí es solo un ejemplo y debería actualizarse según el comentario <!–
–>.
Propiedades del proyecto:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties>
project.build.sourceEncoding: Define la codificación de caracteres utilizada en el proyecto, en este caso UTF-8.
maven.compiler.release: Establece la versión del JDK que se utilizará para compilar el código, aquí se usa la versión 17 de Java.
Gestión de dependencias (dependencyManagement):
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>5.11.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
dependencyManagement: Este bloque permite administrar las versiones de dependencias para evitar repetirlas en módulos hijos.
dependency: Aquí se está importando un “BOM” (Bill of Materials) de JUnit. El BOM es una forma de garantizar que todas las dependencias relacionadas con JUnit (por ejemplo, junit-jupiter-api y junit-jupiter-params) utilicen versiones compatibles entre sí.
groupId: El grupo de la dependencia (org.junit).
artifactId: El nombre del BOM, que es junit-bom.
version: La versión del BOM es 5.11.0.
type: Es de tipo pom, ya que un BOM es un archivo POM que gestiona las versiones de sus dependencias.
scope: Se marca como import para importar la gestión de versiones del BOM a este proyecto.
Dependencias del proyecto:
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Aquí se definen las dependencias del proyecto. En este caso, son librerías para pruebas.
junit-jupiter-api: Librería principal de JUnit 5 para escribir pruebas.
junit-jupiter-params: Extensión de JUnit 5 para pruebas con parámetros.
scope: Ambas dependencias están marcadas como test, lo que significa que solo se usarán durante la fase de prueba y no se incluirán en el empaquetado final de la aplicación.
Configuración de build:
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
... lots of helpful plugins
</pluginManagement>
</build>
pluginManagement: Similar a dependencyManagement, pero para plugins de Maven. Permite definir versiones y configuraciones de plugins para ser heredadas por módulos hijos, sin ejecutarlos directamente en el POM padre.
comentario: lock down plugins versions to avoid using Maven defaults“ sugiere que las versiones de los plugins están fijadas aquí para evitar el uso de versiones predeterminadas de Maven, asegurando coherencia en el build.
Para profundizar aun mas en las capacidades, visitar el tutorial oficial de maven Tutorial Maven