Coucou les guiques,
Bon, je doute qu’il y ait beaucoup de réponse à ma question, mais je la pose quand même (sait-on jamais, des fois qu’il y ait des experts Maven ici) :
Je précise que je suis loin d’être un expert en Maven. J’utilise Maven 2 ici.
Voilà mon problème :
J’ai un premier projet, appellons-le fondations par exemple.
Il s’agit d’une webapp. Créer le .WAR n’est pas très complexe avec Maven, voilà le début de mon fichier pom.xml :
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>romain</groupId>
<artifactId>fondations</artifactId>
<packaging>war</packaging>
<name>Projet Fondations</name>
<version>1.0</version>
...
<build>
...
<finalName>fondations</finalName>
</build>
</project>
Pour faire simple, j’ai zappé les parties concernant les dépendences et quelques autres informations.
Donc quand je fais mvn package, j’obtiens au final le fichier fondations/target/fondations.war.
Maintenant, et c’est là que les choses se gâtent, j’ai un deuxième projet, appellons-le maison.
Le principe c’est que maison construit un WAR à partir du squelette de WAR créé par fondations.
Donc l’idéal pour moi, serait que lorsque je demande de faire maison.war, Maven procède comme suit:
- Il compile le projet fondations.
- Il crée le fichier fondations.war, qui contient les sources compilées de fondations ainsi que tous les fichiers de ce projet (JSP, html, XML, images, etc.)
- Il “dézippe” le fondations.war dans maison/target/, et y ajoute tous les fichiers (Java, JSP, html, XML, images, etc.) de maisons.
- Il recompile l’ensemble dans un fichier maison.war.
(à la limite, si je peux me passer de l’étape de compression des fichiers du projet fondations en .war, ce serait pas mal).
Donc pour répondre à ce problème, je me suis dit qu’il fallait sans doute définir le projet fondations comme parent du projet maison… Est-ce que cela résoudra effectivement mon problème ?
Si oui, comment dois-je écrire mon fichier pom.xml pour le projet maison ?
Voilà ce que j’ai tenté pour l’instant (mais qui ne marche pas, vous vous en doutez) :
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>romain</groupId>
<artifactId>maison</artifactId>
<parent>
<groupId>romain</groupId>
<artifactId>fondations</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>d:/dev/fondations/</relativePath>
</parent>
<packaging>war</packaging>
<version>1.0</version>
<name>Projet Maison</name>
...
<dependencies>
<dependency>
<groupId>romain</groupId>
<artifactId>fondations</artifactId>
<version>1.0</version>
<type>pom</type>
</dependency>
...
</dependencies>
...
</project>
Merci pour votre aide.