| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
Nous venons de créer le projet simple-weather qui contient le code interagissant avec le service Yahoo! Météo
et le projet simple-webapp qui contient une simple servlet
de présentation. C'est le moment de compiler et de packager notre application
sous la forme d'un fichier WAR. Pour cela, vous devez compiler et installer
les deux projets précédemment créés dans un ordre précis. Comme le projet
simple-webapp dépend du projet
simple-weather, nous devons transformer ce dernier (simple-weather)
en JAR avant de pouvoir compiler la webapp. Pour ce faire,
utilisons la commande mvn clean install à partir du projet de plus haut niveau
simple-parent :
~/examples/ch-multi/simple-parent$ mvn clean install
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] Simple Parent Project
[INFO] simple-weather
[INFO] simple-webapp Maven Webapp
[INFO] ----------------------------------------------------------------------
[INFO] Building simple-weather
[INFO] task-segment: [clean, install]
[INFO] ----------------------------------------------------------------------
[...]
[INFO] [install:install]
[INFO] Installing simple-weather-1.0.jar to simple-weather-1.0.jar
[INFO] ----------------------------------------------------------------------
[INFO] Building simple-webapp Maven Webapp
[INFO] task-segment: [clean, install]
[INFO] ----------------------------------------------------------------------
[...]
[INFO] [install:install]
[INFO] Installing simple-webapp.war to simple-webapp-1.0.war
[INFO]
[INFO] ----------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ----------------------------------------------------------------------
[INFO] Simple Parent Project ............................... SUCCESS [3.041s]
[INFO] simple-weather ...................................... SUCCESS [4.802s]
[INFO] simple-webapp Maven Webapp .......................... SUCCESS [3.065s]
[INFO] ----------------------------------------------------------------------
Lorsque Maven est exécuté dans un projet avec des sous-modules, il commence par charger le POM parent et localiser tous les POMs des sous-modules. Maven regroupe alors tous ces POMs dans le plugin Maven Reactor. Il s'agit d'un plugin chargé d'analyser les dépendances entre les modules. Le plugin Reactor s'occupe de l'ordonnancement des composants pour garantir que les modules interdépendants soient compilés et installés dans le bon ordre.
Le plugin Reactor préserve l'ordre des modules défini dans le POM à moins que des changements ne soient nécessaires. Une bonne technique pour comprendre ce mécanisme consiste à imaginer que les modules avec les dépendances inter projets soient descendus dans une liste jusqu'à ce que l'ordre des dépendances soit satisfaisant. Dans quelques rares occasions, il peut être bon de réarranger manuellement l'ordre de vos modules — par exemple si vous voulez qu'un module fréquemment instable soit remonté en début de build.
Dès que le plugin Reactor a trouvé l'ordre dans lequel les projets doivent être construits,
Maven exécute les goals indiqués pour chaque module afin d'effectuer le build du projet multimodule.
Dans cet exemple, vous pouvez effectivement remarquer que Maven commence par construire
le module simple-weather avant l'application web simple-webapp
en exécutant la commande mvn clean install.
Quand vous exécutez Maven à partir de la ligne de commande vous serez amenés à utiliser
fréquemment la phase clean avant l'exécution d'autres phases du cycle de vie.
Lorsque vous précisez clean sur la ligne de commande, vous vous assurez
que Maven enlève les fichiers générés lors des builds précédents avant qu'il ne
compile et package votre application. Exécuter la commande clean n'est
pas nécessaire, mais c'est une précaution utile pour s'assurer que vous
effectuez un "build propre".