Perfiles

Normalmente, cuando creamos un proyecto, necesitamos ajustar ciertos parámetros en función del entorno en el que se vaya a ejecutar la aplicación. Por ejemplo, si tenemos un entorno de prueba, nuestra aplicación se conectará a la base de datos, al sistenma de ficheros, webservice, etc., del entorno de pruebas, y cuando la aplicación pase los test, querremos cambiar algunas propiedades de configuración para que la aplicación quede configurada correctamente para el entorno de producción. Para hacer esto, en maven se pueden definir perfiles y filtros. En este artículo nos ocuparemos de los perfiles de construcción del proyecto (build profiles).

Tipos de perfil

Se pueden definir perfiles a nivel de:

  • Proyecto → En el pom.xml
  • Usuario → En el setings.xml (%USER_HOME%/.m2/settings.xml)
  • Global → En el settings.xml (%M2_HOME%/conf/settings.xml)
  • En un descriptor de perfil → profile.xml en el directorio base
Activación del perfil

Si se definen varios perfiles (Ej.: desarrollo, producción , pruebas…), hay que determinar cual de ellos estará activo en un determinado momento. Es importante, que a la hora de definir el perfil, no nos olvidemos de darle un id. Vamos a ver a continuación como se activan.

De manera explícita por linea de comandos, indicando los perfiles que serán activados:

Del mismo modo, si se han definido perfiles activados por defecto, estos se pueden desactivar usando “-” o “!”:

Activación por defecto, en el settings.xml en la sección en la que se pueden definir una lista de "profile-id”:

O la activaciñon por defecto en la propia definición del perfil:

Activación en base a al estado del entorno donde se ejecute, indicando esto en la propia definición del perfil, o el sistemma perativo en el que se ejecute. Veamos algunos ejemplos:

Según la jdk:

Según el sistema operativo:

Cuando la propiedad  del sistema “perfil” tenga el valor “pruebas” (si no se pone la etiqueta se activa el perfil cuando la variable de sistema tenga cualquier valor).

Para activar el ejemplo anterior, ejecutaríamos:

Cuando no encuentra un determinado fichero:

Lo que hay que tener en cuenta cuando definimos un perfil

Al definir un perfil, se pueden ajustar unas propiedades u otras en función de donde se defina, por ejemplo, si lo definimos en el pom.xml, tendremos más opciones.

También hay que tener en cuenta, que si no definimos correctamente los perfiles podemos romper la portabilidad de la aplicación. Por ejemplo, si hacemos referencia a una propiedad definida en el settings.xml, e intentamos ejecutar la aplicación en otro entorno que no dispone de las propiedades adecuadas en su settings.xml, la construcción fallará. Por ejemplo, si tenemos este plugin:

Donde la propieada “appserver.home”, se ha definido en el settings.xml de este modo:

Como hemos comentado, al ejecutarlo en un entorno que no disponga de la configuración adecuada en el sttings.xml, la ejecución fallará.

Conocer los perfiles activos

Para conocer el perfil que es activado cuando introducimos un determinado valor, por ejemplo, si en el pom tenemos:

Podemos conocer el perfil que se activa cuando introducimos “entorno=desa” de este modo:

Donde terdríamos una respuesta como esta:

Convención de nombres

Es recomendable que nuestro desarrollo sea autodocumentado. La recomendación en el uso del id de los perfiles, es que formen con los valores de las propiedades que lo activan, es decir, si tenemos una variable “entorno“, que puede tomar los valores “desa“, “test” y “prod“, para activar los entornos de desarrollo calidad y producción respectivamente, se recomienda que los perfiles definidos sean “entorno-desa“, “entorno-test” y “entorno-prod“. De modo que para activar cada perfil sólo haya que sustituir el “-” por “=”:

Aquí termina la explicación de los perfiles, en el próximo artículo hablaremos sobre los filtros y la gestion multientorno en Maven

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *