El documento explica los conceptos clave del filtrado de recursos en Maven: 1) La definición de propiedades, ya sean predefinidas o de usuario, 2) La referencia a propiedades utilizando la sintaxis ${nombrePropiedad}, y 3) La activación del filtrado en los recursos mediante la configuración en el pom.xml.
2. Filtrado de recursos
Índice del capítulo
‣ Introducción.
‣ Definición de propiedades.
‣ Referencia a propiedades.
‣ Activación del filtrado de recursos.
Preparado por Jesús Salinas Revelles
3. Filtrado de recursos
Introducción
‣ El filtrado en maven es el mecanismo que permite definir propiedades
dentro del proyecto asignándole valores que, posteriormente, podrán
ser aplicados en cualquier fichero de configuración del proyecto.
‣ Para manejar con solvencia el filtrado debemos tener claros tres
conceptos:
‣
Definición de propiedades: cuál es la sintaxis a utilizar y dónde se deben definir.
‣
Referencia a propiedades: cuál es la sintaxis a utilizar y dónde se pueden utilizar.
‣
Proceso de filtrado: cómo se aplica y cuál es el resultado.
Preparado por Jesús Salinas Revelles
5. Filtrado de recursos
Definición de propiedades
‣ Maven nos ofrece un conjunto de propiedades predefinidas que vamos
a poder utilizar en nuestros proyectos. Como su nombre indica NO
debemos definirlas, ya lo han hecho por nosotros.
‣ Propiedades del proyecto maven: project.*
‣
Cualquier cosas dentro del fichero pom.xml puede referenciarse mediante este tipo
de propiedad: project.groupId, project.version, project.artifactId, etc.
‣ Propiedades de configuración:
‣
Propiedades definidas en el fichero settings.xml, el fichero de configuración de
maven: settings.*
‣ Propiedades asociadas a variables de entorno: env.*
‣
env.PATH, env.HOME, env.JAVA_HOME, env.M2_HOME, etc.
‣ Propiedades asociadas al sistema Java: java.version, java.vendor
Preparado por Jesús Salinas Revelles
6. Filtrado de recursos
Definición de propiedades
‣ Existen dos estrategias para definir propiedades de usuario:
‣
Definición en un fichero pom.xml.
<project>
...
<properties>
<jdbc.username>rootUser</jdbc.username>
<jdbc.password>xxADB_2</jdbc.password>
</properties>
...
</project>
‣
Las propiedades se definen dentro del elemento properties. El nombre de la
propiedad se define en el elemento xml.
‣
En el ejemplo se han definido dos propiedades llamadas jdbc.username y
jdbc.password y sus valores son rootUser y xxADB_2.
Preparado por Jesús Salinas Revelles
7. Filtrado de recursos
Definición de propiedades
‣ Existen dos estrategias para definir propiedades de usuario (cont.):
‣
También se pueden definir en ficheros de properties:
jdbc.url=jdbc:hsqldb:mem:mydb
jdbc.username=curso01
jdbc.password=curso01
‣
Para tenerlas en cuenta se deben en el fichero pom.xml se debe incluir:
<build>
<filters>
<filter>src/main/filters/prueba.properties</filter>
</filters>
...
Ruta donde se encuentra la definición de
propiedades que se aplicarán en el filtrado.
Preparado por Jesús Salinas Revelles
8. Filtrado de recursos
Referencia a propiedades
‣ Una vez que se han definido tantas propiedades como sean
necesarias, ¿cómo hago referencia a éstas? ¿cuál es la sintaxis que
debemos seguir?
‣ Sintaxis:
${nombreDePropiedad}
‣ Ejemplo:
<project>
...
<packaging>jar</packaging>
<build>
<finalName>${project.groupId}-${project.artifactId}</finalName>
</build>
</project>
Preparado por Jesús Salinas Revelles
9. Filtrado de recursos
Referencia a propiedades
‣ Propiedades del proyecto maven:
...
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>sibling-project</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
...
‣ Propiedades de configuración:
<settings>
<localRepository>/RepositorioPrueba</localRepository>
...
${settings.localRepository}
Preparado por Jesús Salinas Revelles
10. Filtrado de recursos
Referencia a propiedades
‣ Propiedades asociadas a variables de entorno:
${env.PATH}
${env.HOME}
${env.JAVA_HOME}
${env.M2_HOME}
‣ Propiedades asociadas al sistema Java:
${java.version}
${java.vendor}
${java.home}
...
${user.name}
${user.home}
${user.dir}
Preparado por Jesús Salinas Revelles
11. Filtrado de recursos
Referencia a propiedades
‣ Propiedades de usuario:
<project>
...
<properties>
<jdbc.username>sa</jdbc.username>
<jdbc.password>appfuse</jdbc.password>
</properties>
...
</project>
‣ Referencia a las propiedades:
${jdbc.username}
${jdbc.password}
Preparado por Jesús Salinas Revelles
12. Filtrado de recursos
Activación del filtrado de recursos
‣ Para terminar, una vez que sabemos cómo se definen propiedades y
cómo se referencian en ficheros de nuestro proyecto, necesitamos
saber sobre qué ficheros o carpetas de nuestro proyecto queremos
aplicar el filtrado o sustitución de propiedades.
‣ Para que el proceso de reemplazo de variables se produzca, el filtrado
debe activarse en el fichero pom.xml del proyecto:
...
<build>
<resources>
<resource>src/main/resources</resource>
<filtering>true</filtering>
</resources>
</build>
...
Preparado por Jesús Salinas Revelles
Ruta de la carpeta en la que se aplica la
sustitución de propiedades