Maven project Inheritance / Aggregation - Factoriser la version du projet
Bonjour,
Mon application est composée de 2 parties : un jar et un war qui font l'objet de deux modules Maven et d'un module parent comme expliqué sur cette page : http://maven.apache.org/guides/intro...o-the-pom.html.
Ma structure de dossiers est une structure à plat (i.e. le POM parent est au même niveau que les POM enfants) :
app-parent
my-app
my-webapp
Voici le code du POM parent :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
...
<groupId>com.mycompany.app</groupId>
<artifactId>app</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>../my-app</module>
<module>../my-webapp</module>
</modules>
... |
Lorsque j'effectue une nouvelle release de mon appli, je souhaiterais ne pas avoir à mettre à jour la version du POM parent dans les POM enfants.
C'est pourquoi j'envisageais d'utiliser la variable ${project.version} comme expliqué dans le paragraphe "Project Interpolation and Variables" de la page web déjà indiquée.
Par exemple voici, le code du pom.xml de my-app :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
...
<parent>
<groupId>com.mycompany.app</groupId>
<artifactId>app</artifactId>
<version>${project.version}</version>
<relativePath>../app-parent</relativePath>
</parent>
<!-- Pas de version spécifiée car héritée du parent -->
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
... |
Or, avec cette configuration, lorsque je lance un mvn clean install, Maven sort l'erreur suivante :
Code:
1 2
|
Non-resolvable parent POM: Could not transfer artifact com.mycompany.app:app:pom:${project.version} |
Il semble donc que la variable ${project.version} ne soit pas interprétée au préalable et sa valeur injectée dans le POM enfant.
Auriez-vous une solution pour factoriser la déclaration de la version de mon application (et donc de tous les modules sous-jacents) au niveau du POM parent uniquement ?
Merci d'avance pour votre aide