Objetivo del tema
En este tema aprenderás a crear proyectos desde cero con Apache Maven, revisar los arquetipos disponibles, importar el resultado en IDEs populares, ajustar un pom.xml
mínimo y adoptar la filosofía de convenciones sobre configuración.
El plugin maven-archetype-plugin
incluye el objetivo generate
, que scaffoldeará una estructura de proyecto siguiendo un modelo prediseñado. Ejecuta el comando desde una carpeta vacía o donde quieras que se cree la nueva estructura.
mvn -B archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=1.4 \
-DgroupId=com.ejemplo.app \
-DartifactId=demo-maven \
-DinteractiveMode=false
En Windows ejecuta el comando en una sola línea o utiliza el carácter de continuación apropiado para tu terminal (PowerShell: `
, CMD: ^
). Esta es la versión en una sola línea:
mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DgroupId=com.ejemplo.app -DartifactId=demo-maven -DinteractiveMode=false
archetypeGroupId
apunta al repositorio oficial de arquetipos de Apache Maven.archetypeArtifactId
selecciona el arquetipo; el quickstart genera un proyecto Java básico.groupId
corresponde al dominio invertido o namespace que agrupa los artefactos de la organización.artifactId
identifica el proyecto dentro del grupo y define la carpeta creada.interactiveMode
en false
evita preguntas adicionales y toma los valores proporcionados en la línea de comandos.Si omites parámetros, Maven ingresará en modo interactivo y pedirá cada valor. El comando también admite filtros por catálogo de arquetipos personalizados.
En ejecuciones con JDK recientes pueden aparecer advertencias sobre sun.misc.Unsafe
; son mensajes informativos y no impiden la generación del proyecto.
Los arquetipos actúan como plantillas para diferentes escenarios (aplicaciones web, microservicios, librerías, proyectos de integración). Además de los arquetipos oficiales, cada organización puede publicar los propios.
archetype-catalog.xml
alojado en un repositorio interno.Para listar las opciones disponibles ejecuta mvn archetype:generate -DinteractiveMode=true
; Maven mostrará catálogos remotos y permitirá filtrar por palabras clave.
Una vez generado el proyecto, puedes importarlo en IDEs que comprenden el modelo de Maven sin pasos adicionales. La mayoría detecta el pom.xml
y sincroniza dependencias automáticamente.
.project
, .classpath
).Si el IDE no reconoce el proyecto, ubica el pom.xml
principal y fuerza una recarga o reimport para reconstruir la configuración.
El POM mínimo creado por los arquetipos incluye las coordenadas del proyecto y la dependencia de pruebas. Puedes ampliarlo declarando el nivel de lenguaje y dependencias propias sin sobrecargarlo de opciones.
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ejemplo.app</groupId>
<artifactId>demo-maven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
properties
fija la versión de Java utilizada por el plugin de compilación.test
limita la dependencia a las fases de prueba.-SNAPSHOT
denota versiones en desarrollo susceptibles a cambios frecuentes.A medida que crece el proyecto, agrega solo dependencias y plugins imprescindibles; el resto de la configuración puede delegarse a perfiles o herencias más adelante.
Maven reduce la configuración explĂcita apoyándose en convenciones. Adoptarlas desde el inicio acelera la colaboración y evita ajustes innecesarios.
<properties>
para facilitar actualizaciones y evitar discrepancias.Estas buenas prácticas garantizan que cualquier integrante del equipo pueda compilar el proyecto sin sorpresas y que las configuraciones avanzadas se construyan sobre una base sólida.
Generar un proyecto con arquetipos, conocer las plantillas disponibles, importar el resultado en IDEs compatibles y mantener un pom.xml
sencillo son los pilares para iniciar proyectos con Maven. Las convenciones sobre configuración minimizan los ajustes manuales y preservan la coherencia entre entornos de desarrollo, pruebas y producción.