2012-02-16 16 views
10

que tienen proyectos de varios módulos Maven con dicha estructura:Maven propiedades de perfil no se "superior"

padre-pom-proyecto

- modulo1

- modulo2

En el proyecto padre-pom tengo tal pom.xml

<modules> 
     <module>module1</module> 
    </modules> 
... 
    <profiles> 
     <profile> 
      <id>local</id> 
      <properties> 
       <prop>local_prop</prop> 
      </properties> 
     </profile> 
     <profile> 
      <id>test</id> 
      <modules> 
       <module>module2</module> 
      </modules> 
      <properties> 
       <prop>test_prop</prop> 
      </properties> 
     </profile> 
    </profiles> 

En todo pom.xml archivos que tienen tal etiqueta:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
     <resource> 
      <directory>src/test/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
</build> 

En el módulo 1 y modulo2 en recursos directorio Tengo archivos de propiedades con dicho texto:

prop=${prop} 

El problema es que después de

mvn instalación limpia

o

mvn instalación limpia -Ptest

o incluso

mvn instalación limpia prueba -P

consigo

prop = local_prop

Si perfil de prueba usuario para acumulación Module2 también está construida, pero propiedades se utilizan de perfil local. Uso Maven 3.0.3. ¿Alguien tiene alguna idea?

+1

¿Está seguro de que no definió la propiedad fuera de ningún nodo de perfil? – bugske

+0

De hecho, creo que podría tratar de definir la propiedad fuera de cualquier nodo de perfil con un valor vacío. -> bugske

+0

2 bugske Sí - Lo compruebo dos veces. Y probé tu segunda idea: nada cambia. – Nazar

Respuesta

1

Resuelvo problema desinstalando el complemento maven actual para eclipse y uso otro. ahora el uso de este pequeños: - Maven Integration: http://m2eclipse.sonatype.org/sites/m2e - Maven Integration para la DAP: http://m2eclipse.sonatype.org/sites/m2e-extras/

temprano que estaba usando éste http://download.eclipse.org/technology/m2e/releases/. No puedo explicar ese comportamiento, pero puede haber alguna configuración modificada por el complemento.

+0

Extraño ... Suena como un otro error en el plugin m2 ... (su tercer enlace está roto por cierto) – Yanflea

+0

use esta url en Eclipse (Ayuda-> Instalar nuevo software) – Nazar

+1

(Soy un usuario de IntelliJ). oh ok, debería haberlo leído un poco más;) ("Este es un repositorio de sitios/p2 de actualización de Eclipse; debes acceder a él desde Eclipse") ... Lo siento. – Yanflea

0

No puedo entender cómo maven puede resolver su propiedad si no especifica ningún perfil. Entonces, para ver qué hay realmente allí, me probé, siguiendo exactamente el esquema que describiste y ... No experimenté el problema que tienes. En su caso, realmente se comporta como si la propiedad se hubiera definido fuera del perfil, como se sugirió en bugske. ¿Qué pasó si comentas temporalmente ambos perfiles?

+0

obtengo prop = $ {prop} – Nazar

+0

... como esperaba. – Yanflea

4

Añadir un ${basedir} delante de sus directorios de recursos:

<directory>${basedir}/src/main/resources</directory>

Esto debería solucionar su problema.Mi explicación sería que, en un proyecto de varios módulos, no está recogiendo la ruta correctamente (para el módulo secundario), si está construyendo desde el nivel superior. Por lo tanto, al intentar filtrar, lo aplica a un directorio diferente (el agregador de nivel de raíz real), en lugar del elemento secundario.

Espero que ayude.

+1

Después de mucho tiempo investigando esto, ¡eso solucionó mi problema! ¡Gracias! – jonashackt

0

Aunque viejo tenía el mismo problema y no encontré la solución aquí. Para mí, el problema era Eclipse, que uso en paralelo a mvn en la línea de comandos. Eclipse llamó instantáneamente recursos de proceso después de que lo hice en la línea de comando.

Por lo tanto, la solución fue seleccionar el perfil en Eclipse (Proyecto-> Maven-> Seleccionar perfiles de Maven).

Cuestiones relacionadas