Tengo una pregunta sobre las propiedades en un proyecto de varios módulos.Las propiedades de Maven en el proyecto de varios módulos se restablecen al valor predeterminado
Considere el siguiente proyecto estrutura de 3 niveles:
project
+- pom.xml (packaging: pom) //referred to as super-pom
+- module_group
+- pom.xml (packaging: pom) //referred to as group-pom
+- module
+-pom.xml (packaging: jar) //referred to as module-pom
En el super-pom defino una propiedad revisión que obtiene el valor por defecto "desconocido".
Además declaro y uso el buildnumber-maven-plugin
que está configurado para obtener la revisión svn y ponerla en la propiedad revisión.
Siguiente Configuro el maven-jar-plugin
para escribir esa propiedad en el manifiesto.
En th module-pom declaro el uso de buildnumber-maven-plugin
para que se ejecute realmente.
Todo esto funciona cuando se construye el módulo directamente, es decir, se ejecuta el módulo-pom solamente. El manifiesto contiene la revisión que informa el buildnumber-maven-plugin
tal como está impreso en la consola.
Sin embargo, si ejecuto la super-pom o grupo-Pom el valor predeterminado para revisión se escribe en el manifiesto, aunque el buildnumber-maven-plugin
es ejecutado y se recupera la revisión correcta (se imprime a la consola antes ejecuciones maven-jar-plugin
).
Tengo la sensación de que me falta algo en la herencia de la propiedad en proyectos de varios módulos.
¿Alguien tiene una idea de lo que podría estar mal aquí? ¿O alguien podría indicarme una descripción de cómo se manejan las propiedades en esos casos (desafortunadamente no logré encontrar una buena descripción aún)?
actualización
hice algunas investigaciones y unos pocos pruebas con resultados de depuración (-X
opción) y de lo que he encontrado hasta ahora, supongo que mi problema es el siguiente:
1) Durante pom analizar las propiedades utilizadas en el pom se reemplazan por sus valores.
Considere esto pom parcial:
<!-- declare the property default value -->
<properties>
<revision>default</revision>
</properties>
...
<!-- use the property -->
<someconfig>${revision}</someconfig>
Después se evalúa la pom, parece resultar en un estado que correspondería a esto:
<properties>
<revision>default</revision>
</properties>
...
<!-- The property seems to be "statically" replaced -->
<someconfig>default</someconfig>
2) El plugin que establece el real el valor de propiedad se ejecuta después, incluso si durante la fase validate
.
Por lo tanto, la propiedad en sí está configurada correctamente en el nuevo valor, pero ya no se lee.
3) El plugin que utiliza <someconfig>
(en mi caso sería el maven-jar-plugin
) ahora funciona con <someconfig>default</someconfig>
y por lo tanto no se lee revision
en absoluto.
¿Alguien puede confirmar esto?