Objetivo del tema
En este tema descubrirás cómo Apache Maven permite adaptar la construcción mediante perfiles, configurar entornos diferenciados, gestionar propiedades personalizadas, utilizar settings.xml
y controlar dependencias según el perfil activo.
Los perfiles agregan configuraciones condicionales que se activan según parámetros, sistemas operativos, propiedades o comandos. La guía oficial sobre perfiles describe todas las opciones disponibles en la introducción a profiles.
<profiles>
<profile>
<id>produccion</id>
<activation>
<property>
<name>entorno</name>
<value>prod</value>
</property>
</activation>
<properties>
<app.mode>production</app.mode>
</properties>
</profile>
</profiles>
mvn package -Dentorno=prod
o mediante el flag -P
apuntando al identificador.settings.xml
.Los perfiles permiten crear configuraciones para desarrollo, prueba y producción reutilizando la misma base. Así puedes cambiar URLs, credenciales o parámetros de compilación según el entorno.
dev
, qa
y prod
con propiedades específicas (por ejemplo, la URL de una API).Planificar estos perfiles reduce la necesidad de modificar el código fuente entre despliegues.
La sección <properties>
centraliza valores reutilizables y facilita su sobreescritura desde perfiles o desde la línea de comandos.
<properties>
<java.version>17</java.version>
<spring.version>6.1.5</spring.version>
</properties>
${java.version}
.-Dspring.version=6.2.0
sin editar el archivo.El uso disciplinado de propiedades minimiza errores al actualizar versiones o cambiar endpoints según el entorno.
El archivo settings.xml
permite definir perfiles globales, credenciales, repositorios y proxies fuera del POM. Se ubica en %USERPROFILE%\.m2\settings.xml
o ~/.m2/settings.xml
. La referencia completa está disponible en la documentación de settings.
<settings>
<servers>
<server>
<id>repositorio-privado</id>
<username>deployuser</username>
<password>${env.DEPLOY_PASSWORD}</password>
</server>
</servers>
<proxies>
<proxy>
<id>proxy-corporativo</id>
<active>true</active>
<protocol>https</protocol>
<host>proxy.miempresa.com</host>
<port>8443</port>
</proxy>
</proxies>
</settings>
settings.xml
y exclúyelo de control de versiones.${env.VARIABLE}
) para evitar contraseñas en texto plano.settings.xml
se activan de la misma manera que los del POM, combinando configuraciones de ambos.Los perfiles también controlan dependencias específicas, permitiendo habilitar librerías extra solo cuando son necesarias.
<profile>
<id>monitoring</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.12.4</version>
</dependency>
</dependencies>
</profile>
mvn package -Pmonitoring
para incluir la dependencia opcional.<exclusions>
dentro de un perfil para remover dependencias transitivas en escenarios específicos.Gestionar dependencias por perfil evita empaquetar librerías innecesarias y mantiene el artefacto principal ligero.
Los perfiles y propiedades avanzadas de Maven permiten adaptar construcciones a cada contexto sin duplicar proyectos. Con una buena organización de perfiles, propiedades y configuraciones en settings.xml
puedes manejar credenciales, proxies, dependencias opcionales y parámetros por entorno manteniendo builds reproducibles.