| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
Les projets multimodules sont des projets qui se composent d'un ensemble de modules à construire. Le
packaging d'un projet multimodule a toujours pour valeur pom, et ce projet produit rarement un
artefact. Un projet multimodule n'existe que pour regrouper un ensemble de projets dans un même build. La Figure 9.3, « Relations dans un projet multimodule » nous montre une hiérarchie de projets qui se compose de deux projets parents avec un
packaging de type pom, et de trois projets de type jar.
La structure des répertoires sur le système de fichiers suit les relations entre les modules. L'ensemble des projets illustré par la Figure 9.3, « Relations dans un projet multimodule » aurait la structure de répertoires suivante :
top-parent-project/pom.xml top-parent-project/subparent-parent-project/pom.xml top-parent-project/subparent-parent-project/project-a/pom.xml top-parent-project/subparent-parent-project/project-b/pom.xml top-parent-project/project-c/pom.xml
Les projets sont liés entre eux par les projets top-parent-project et
subparent-parent-project comme sous-modules dans un
POM. Par exemple, le projet
org.sonatype.mavenbook:top-parent-project est un projet multimodule avec un
packaging de type pom. Le fichier pom.xml du
projet top-parent-project doit posséder la balise modules suivante :
Exemple 9.10. Balise modules du projet top-parent-project
<project>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>top-parent-project</artifactId>
...
<modules>
<module>subparent-parent-project</module>
<module>project-c</module>
</modules>
...
</project>
Quand Maven parse le POM du projet top-parent-project, il analyse la
balise modules pour s'apercevoir que le projet top-parent-project référence les projets
subparent-parent-project et project-c. Maven va alors traiter les fichiers
pom.xml dans chacun de ces sous-répertoires. Maven répète cette opération pour chacun des
sous-modules : il lira le fichier subparent-parent-project/pom.xml pour s'apercevoir que le
projet subparent-parent-project fait référence à deux projets dans la balise
modules suivante :
Exemple 9.11. Balise modules du projet subparent-parent-project
<project>
...
<modules>
<module>project-a</module>
<module>project-b</module>
</modules>
...
</project>
Attention au fait que nous appelons "modules" les projets qui composent un projet multimodule et non projets "enfants" ou "fils". Nous agissons ainsi délibérément pour ne pas confondre les projets qui sont liés dans un projet multimodule de ceux qui héritent d'un même POM.