Les FAQs Java :
FAQ JAVA FAQ Java EE FAQ Java ME FAQ Java XML FAQ JavaFX FAQ Java GUI FAQ Struts FAQ JSF FAQ JDBC JDO FAQ Hibernate FAQ Spring FAQ Eclipse FAQ NetBeans FAQ JCreator FAQ Maven 2

FAQ Maven 2Consultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 89, dernière mise à jour : 17 mai 2009 

 
OuvrirSommaireLes projets multimodules

Voila l'exemple d'une arborescence de trois modules, avec un projet parent :

Arborescence à trois modules
Sélectionnez

parent
|-- module1
| |-- pom.xml
|-- module2
| |-- pom.xml
|-- module3
| |-- pom.xml
|-- pom.xml

Le fichier pom.xml du parent déclare les modules enfants et doit avoir comme packaging pom :

Déclaration des trois modules
Sélectionnez

<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 :

Déclaration du parent
Sélectionnez

<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épertoires les hébergeant, ainsi que l'artifactId.

Mis à jour le 28 mai 2007  par Denis Cabasson, Eric Reboisson

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 :

Gestion des dépendances avec le dependencyManagement
Sélectionnez

<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 :

Utilisation de la dépendance du parent
Sélectionnez

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

Mis à jour le 17 juillet 2006  par Denis Cabasson, Eric Reboisson
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 - 2014 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.