Maven
Filtrado de recursos
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
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
Filtrado de recursos

Introducción

Preparado por Jesús Salinas Revelles
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
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
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
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
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
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
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
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

Filtrado de recursos en Maven

  • 1.
  • 2.
    Filtrado de recursos Índicedel 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
  • 4.
  • 5.
    Filtrado de recursos Definiciónde 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ónde 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ónde 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 Referenciaa 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 Referenciaa 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 Referenciaa 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 Referenciaa 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óndel 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