Modules

Structure et déclaration

Maven 2 gére automatiquement des projets complexes au travers des mécanismes de modules: structure arborescente  de projets et sous-projets.

<project>
 ...
 <modules>
  <module>fidl-idl3</module>
  <module>fidl-lang</module>
  <module>fidl-java</module>
  <module>maven-fidl-plugin</module>
  <module>fidl-site</module>
 </modules>
 ...
</project>

Le tag <module> contient un chemin relatif au POM courant (celui dans lequel se trouvent indiqués les modules). La configuration suivante est valide:

<project>
 ...
 <modules>
  <module>../fidl-idl3</module>
 </modules>
 ...
</project>

La structure des modules peut être arbitrairement compliqué (sans aboutir à un cycle. Le POM d'un noeud de l'arbre des modules doit avoir un packaging de type pom

Le mécanisme des modules est indépendant de l'héritage

En pratique, les deux sont généralement liés: le POM racine du projet est parent de tous les autres.

Exécution

L'exécution de maven dans un noeud provoque son exécution dans tous les modules (et sous modules): principe du réacteur

~/fidl $> mvn packag.e
Maven version: 2.0.4
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO]   FIDL Tool Suite
[INFO]   FIDL IDL3 Language
[INFO]   FIDL Language Core
[INFO]   FIDL Java target handler
[INFO]   Maven FIDL Plugin
[INFO]   FIDL Tool site
...


[INFO] ----------------------------------------------------------------------------
[INFO] Building FIDL IDL3 Language
[INFO]    task-segment: [package]
[INFO]----------------------------------------------------------------------------
...


[INFO] ----------------------------------------------------------------------------
[INFO] Building FIDL Language Core
[INFO]    task-segment: [package]
[INFO] ----------------------------------------------------------------------------
...


L'ordre d'exécution dépend du calcul  des dépendances entre modules: construction du graphe (acyclique) de dépendance et tri topologique dessus.  

index