Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    3.5.2. Projets multimodules

    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 3.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.

    Relations dans un projet multimodule

    Figure 3.3. Relations dans un projet multimodule


    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 3.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 3.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 3.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.