Perfiles de configuración
Se creará un pom.xml que se comportará de manera diferente en función de ciertas variables del entorno como, por ejemplo, la existencia de un fichero o el tiempo de sistema operativo.
Contenido
Niveles de creación de perfiles
Existen 3 niveles en los que crear un perfil:
- A nivel de instalación (Maven settings.xml)
- A nivel de usuario (User settings.xml)
- A nivel de proyecto (pom.xml)
Nos centraremos en la creación a nivel de proyecto.
Definir la configuración en el perfil
Dentro del pom.xml del proyecto que desee configurar escriba todo el contenido del <build>
y del <distributionManagment>
dentro de <profiles><profile> …
. Quedaría algo así:
…
<profiles>
<profile>
<id> prof-1 </id>
<build>
…
</build>
<distributionManagement>
…
</distributionManagement>
</profile>
</profiles>
Pruebe el despligue
mvn deploy
Observe como la configuración no tiene efecto ya que el perfil no está activado.
Activación de perfiles
Hay 3 maneras de activar un perfil:
- De manera explícita al invocar un comando Maven
mvn -P nombrePerfil ...
- A nivel de usuario en USER_HOME/.m2/settings.xml:
…
<activeProfiles>
<activeProfile> prof-1 </activeProfile>
<activeProfile> prof-2 </activeProfile>
</activeProfiles>
…
- A nivel de proyecto, mediante un trigger en el propio perfil que indique bajo qué condiciones dicho perfil ha de usarse (variables, sistema operativo, archivos):
- Ejemplo 1: Activado en entornos Windows (cf. OS options)
…
<profile>
<id> prof-1 </id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<build>
…
- Ejemplo 2: Activado por la existencia de un fichero/carpeta
…
<profile>
<id> prof-1 </id>
<activation>
<file>
<exists>C:\myRepo</exists>
</file>
</activation>
<build>
…
Al igual que exists existe la opción missing.
- Ejemplo 3: Activado en función de una variable de entorno
…
<profile>
<id> prof-1 </id>
<activation>
<property>
<name>env</name>
<value>dev</value>
</property>
</activation>
<build>
…
Se ejecutaría con mvn –Denv=dev …
.
Tarea final
Cree dos perfiles para configurar una ruta distinta para el sitio de despliegue. La activación del perfil se hará en función de la variable “env”. Un perfil se activará si ésta vale “dev” y el otro se activará si vale “prod”.