2010-02-25 13 views
22

Tengo un archivo de propiedades llamado ApplicationResources.properties en mi aplicación con una propiedad que cambia según el entorno. Digamos que la propiedad es:Maven Cambiar un valor en un archivo basado en el perfil

 resources.location=/home/username/resources 

y este valor es diferente cuando se ejecuta la aplicación durante el desarrollo y la aplicación cuando entra en producción.

Sé que puedo usar diferentes perfiles en Maven para realizar diferentes tareas de compilación en diferentes entornos. Lo que quiero hacer es de alguna manera reemplazar el valor de la ubicación de recursos en el archivo de propiedades basado en el perfil de Maven en uso. ¿Esto es posible?

Respuesta

46

Lo que quiero hacer es de alguna manera reemplazar el valor de los recursos.location en el archivo de propiedades basado en el perfil de Maven en uso. ¿Esto es posible?

Sí, lo es. Active el filtrado de recursos y defina el valor para reemplazar en cada perfil.

En su ApplicationResources.properties, declarar un token para reemplazar la siguiente manera:

resources.location=${your.location} 

En el POM, añadir una etiqueta <filtering> para la adecuada <resource> y ponerlo en cierto como esto:

<project> 
    ... 
    <build> 
    ... 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
     ... 
    </resources> 
    ... 
    </build> 
    ... 
</project> 

A continuación, agregue un elemento <your.location> dentro del elemento <properties> dentro de cada perfil:

<project> 
    ... 
    <profiles> 
    <profile> 
     <id>my-profile</id> 
     ... 
     <properties> 
     <your.location>/home/username/resources</your.location> 
     </properties> 
     ... 
    </profile> 
    ... 
    </profiles> 
</project> 

Más sobre el filtrado de recursos here y here.

+1

@Pascal Thivent Gracias. Esta es una excelente explicación –

+0

+1 En segundo lugar esa: D – ant

Cuestiones relacionadas