
FAQ Maven 2Consultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 74, dernière mise à jour : 22 septembre 2006
Sommaire→Les projets multimodulesVoila l'exemple d'une arborescence de trois modules, avec un projet parent :
parent
|-- module1
| |-- pom.xml
|-- module2
| |-- pom.xml
|-- module3
| |-- pom.xml
|-- pom.xml
Le fichier pom.xml du parent déclare les modules enfants :
<project>
...
<modules>
<module>module1</module>
<module>module2</module>
<module>module3</module>
</modules>
...
</project>
Ainsi lorsqu'une action sera lancée sur le projet parent, elle le sera également sur les projets enfants.
Les enfants doivent eux-aussi déclarer le parent dans leur pom.xml :
<project>
<parent>
<groupId>com.organisation</groupId>
<artifactId>parent</artifactId>
<version>1</version>
</parent>
</project>
De cette façon, toute la configuration déclarée dans le parent sera utilisée dans le module enfant par héritage.
Il est vivement conseillé de nommer les modules de la même façon que les réperoires les hébergeant, ainsi que l'artifactId.
La balise dependencyManagement, dans le POM du projet parent permet de déclarer une version et un scope "préféré" pour une dépendance.
Si un des modules enfants utilise cette dépendance, sans préciser de version ou de scope, celle déclarée dans le dependencyManagement sera utilisée.
Exemple :
<project>
..
<dependencyManagement>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</dependencyManagement>
..
</project>
De cette façon, si un module enfant utilise commons-lang :
<project>
...
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
</dependencies>
...
</project>
La version choisie sera la 2.1 avec le scope compile.
Ce mécanisme permet de monter très facilement une version de dépendance dans tous les modules enfants.


















