Objetivo del tema
En este tema aprenderás el modelo fundamental de Apache Maven, desde la idea de proyecto y su estructura estándar hasta los elementos que permiten ejecutar ciclos de construcción repetibles dentro del ecosistema Java.
Un proyecto Maven es cualquier aplicación o biblioteca cuya configuración se describe en un archivo pom.xml
. El POM establece dependencias, plugins, perfiles y metadatos que Maven interpreta para ejecutar tareas automatizadas.
groupId
, artifactId
y version
que permiten publicar artefactos consistentes.El concepto de proyecto trasciende el código fuente; abarca la forma en que se empaquetan artefactos, se ejecutan pruebas y se distribuyen resultados.
Maven adopta convenciones sobre la ubicación de archivos fuente, recursos y tests. Seguirlas evita configuraciones adicionales y permite que los plugins funcionen sin ajustes manuales.
mi-proyecto/
|-- pom.xml
|-- src/
| |-- main/
| | |-- java/
| | |-- resources/
| | `-- webapp/
| `-- test/
| |-- java/
| `-- resources/
`-- target/
src/main/java
aloja el código fuente principal.src/test/java
contiene las clases de prueba automatizada.src/main/resources
y src/test/resources
guardan archivos de configuración y datos auxiliares.target
se genera durante la construcción e incluye clases compiladas y artefactos empaquetados.Cuando un proyecto necesita una estructura distinta, se pueden redefinir rutas mediante configuraciones de plugins, aunque la recomendación es mantener la convención para favorecer la colaboración.
El POM es el contrato que describe cómo construir el proyecto. Maven lo interpreta como un documento XML jerárquico compuesto por elementos obligatorios y opcionales. Consulta la guía oficial en la introducción al POM para revisar cada sección en detalle.
groupId
, artifactId
y version
identifican la publicación.<dependencies>
declara librerías externas y su alcance (scope).<build>
agrupa plugins que extienden el ciclo de vida (por ejemplo, compilación o empaquetado).<properties>
centraliza versiones y valores reutilizables dentro del archivo.Gracias a esta declaración estándar, cualquier desarrollador puede clonar el repositorio, ejecutar mvn package
y obtener el mismo resultado sin configuraciones adicionales.
Maven organiza las tareas en ciclos de vida que definen el orden de ejecución. El ciclo de construcción por defecto avanza por fases encadenadas, lo que significa que invocar una fase ejecuta todas las anteriores.
src/main/java
.src/test/java
.Otros ciclos como clean o site cubren la limpieza de artefactos temporales y la generación de documentación. Cada fase puede personalizarse mediante plugins.
Los repositorios almacenan artefactos publicados y sirven como origen para resolver dependencias. Maven gestiona tres tipos principales:
%USERPROFILE%\.m2\repository
o ~/.m2/repository
, donde se cachean dependencias y artefactos instalados.La configuración de repositorios adicionales se realiza en el POM o en settings.xml
, lo que permite combinar dependencias públicas y privadas de forma segura.
Maven se apoya en proyectos declarativos, una estructura de directorios predecible, el POM como pieza central y ciclos de vida bien definidos. Conocer cómo funcionan los repositorios y dónde se almacenan las dependencias es vital para resolver bibliotecas y publicar artefactos sin sorpresas. Estos conceptos preparan el terreno para crear proyectos reales y personalizar configuraciones en los siguientes temas.