Aller au contenu
  1. Articles/

Le cycle de vie de son build Maven

·3 mins·

Article publié il y a 12 ans : les outils et les commandes décrits ont pu changer depuis.

Avec Maven, je me suis souvent retrouvé un peu seul devant un POM en me demandant ce que pouvait bien exécuter mon build sans devoir aller lister toutes les exécutions déclarées. Depuis Maven 3 il est possible de prévoir ce qu’un build va exécuter au sein de son cycle de vie. Etrangement il n’y a rien qui permet d’afficher facilement ce plan de build calculé. Voici le buildplan-maven-plugin.

Configuration
#

Pour utiliser le plugin facilement, déclarer son groupId au sein de la configuration de Maven (ie settings.xml) :

<pluginGroups>
    <pluginGroup>fr.jcgay.maven.plugins</pluginGroup>
</pluginGroups>

Afficher le plan du build
#

Il est possible de lister toutes les exécutions de goals qui font parties du build. La simulation se déroule jusqu’à la phase deploy.

> mvn buildplan:list

[INFO] --- buildplan-maven-plugin:1.0:list (default-cli) @ buildplan-maven-plugin ---
[INFO] --------------------------------------------------------------------------------------------------------------------
[INFO] PLUGIN                      | PHASE                  | ID                                | GOAL
[INFO] --------------------------------------------------------------------------------------------------------------------
[INFO] maven-plugin-plugin         | generate-sources       | help-goal                         | helpmojo
[INFO] maven-plugin-plugin         | process-classes        | default-descriptor                | descriptor
[INFO] maven-resources-plugin      | process-resources      | default-resources                 | resources
[INFO] maven-compiler-plugin       | compile                | default-compile                   | compile
[INFO] maven-plugin-plugin         | process-classes        | mojo-descriptor                   | descriptor
[INFO] maven-resources-plugin      | process-test-resources | default-testResources             | testResources
[INFO] maven-compiler-plugin       | test-compile           | default-testCompile               | testCompile
[INFO] maven-surefire-plugin       | test                   | default-test                      | test
[INFO] animal-sniffer-maven-plugin | process-classes        | check-signature                   | check
[INFO] maven-jar-plugin            | package                | default-jar                       | jar
[INFO] maven-plugin-plugin         | package                | default-addPluginArtifactMetadata | addPluginArtifactMetadata
[INFO] maven-source-plugin         | package                | attach-sources                    | jar-no-fork
[INFO] license-maven-plugin        | verify                 | default                           | check
[INFO] maven-install-plugin        | install                | default-install                   | install
[INFO] maven-deploy-plugin         | deploy                 | default-deploy                    | deploy

Lister les phases du plan
#

Une vue par phase au sein du build est disponible. On peut ainsi voir rapidement quels plugins seront exécutés au sein d’une phase.

> mvn buildplan:list-phase

[INFO] --- buildplan-maven-plugin:1.0:list-phase (default-cli) @ buildplan-maven-plugin ---
[INFO] install ------------------------------------------------------------------------------------------
[INFO]     + maven-install-plugin        | default-install                   | install
[INFO] generate-sources ---------------------------------------------------------------------------------
[INFO]     + maven-plugin-plugin         | help-goal                         | helpmojo
[INFO] process-resources --------------------------------------------------------------------------------
[INFO]     + maven-resources-plugin      | default-resources                 | resources
[INFO] test ---------------------------------------------------------------------------------------------
[INFO]     + maven-surefire-plugin       | default-test                      | test
[INFO] test-compile -------------------------------------------------------------------------------------
[INFO]     + maven-compiler-plugin       | default-testCompile               | testCompile
[INFO] process-test-resources ---------------------------------------------------------------------------
[INFO]     + maven-resources-plugin      | default-testResources             | testResources
[INFO] verify -------------------------------------------------------------------------------------------
[INFO]     + license-maven-plugin        | default                           | check
[INFO] process-classes ----------------------------------------------------------------------------------
[INFO]     + maven-plugin-plugin         | default-descriptor                | descriptor
[INFO]     + maven-plugin-plugin         | mojo-descriptor                   | descriptor
[INFO]     + animal-sniffer-maven-plugin | check-signature                   | check
[INFO] compile ------------------------------------------------------------------------------------------
[INFO]     + maven-compiler-plugin       | default-compile                   | compile
[INFO] package ------------------------------------------------------------------------------------------
[INFO]     + maven-jar-plugin            | default-jar                       | jar
[INFO]     + maven-plugin-plugin         | default-addPluginArtifactMetadata | addPluginArtifactMetadata
[INFO]     + maven-source-plugin         | attach-sources                    | jar-no-fork
[INFO] deploy -------------------------------------------------------------------------------------------
[INFO]     + maven-deploy-plugin         | default-deploy                    | deploy

Pour filtrer la description d’une seule phase, utiliser le paramètre buildplan.phase :

mvn buildplan:list-phase -Dbuildplan.phase=test

Lister les plugins
#

On peut grouper les exécutions par plugin.

> mvn buildplan:list-plugin

[INFO] --- buildplan-maven-plugin:1.0:list-plugin (default-cli) @ buildplan-maven-plugin ---
[INFO] maven-deploy-plugin -------------------------------------------------------------------------
[INFO]     + deploy                 | default-deploy                    | deploy
[INFO] maven-source-plugin -------------------------------------------------------------------------
[INFO]     + package                | attach-sources                    | jar-no-fork
[INFO] license-maven-plugin ------------------------------------------------------------------------
[INFO]     + verify                 | default                           | check
[INFO] maven-resources-plugin ----------------------------------------------------------------------
[INFO]     + process-resources      | default-resources                 | resources
[INFO]     + process-test-resources | default-testResources             | testResources
[INFO] maven-plugin-plugin -------------------------------------------------------------------------
[INFO]     + generate-sources       | help-goal                         | helpmojo
[INFO]     + process-classes        | default-descriptor                | descriptor
[INFO]     + process-classes        | mojo-descriptor                   | descriptor
[INFO]     + package                | default-addPluginArtifactMetadata | addPluginArtifactMetadata
[INFO] maven-jar-plugin ----------------------------------------------------------------------------
[INFO]     + package                | default-jar                       | jar
[INFO] animal-sniffer-maven-plugin -----------------------------------------------------------------
[INFO]     + process-classes        | check-signature                   | check
[INFO] maven-surefire-plugin -----------------------------------------------------------------------
[INFO]     + test                   | default-test                      | test
[INFO] maven-compiler-plugin -----------------------------------------------------------------------
[INFO]     + compile                | default-compile                   | compile
[INFO]     + test-compile           | default-testCompile               | testCompile
[INFO] maven-install-plugin ------------------------------------------------------------------------
[INFO]     + install                | default-install                   | install

Le paramètre buildplan.plugin permet de filtrer un plugin en particulier :

mvn buildplan:list-plugin -Dbuildplan.plugin=maven-compiler-plugin

Et voilà comment on peut explorer ce que va exécuter Maven pendant un build !

Partager

Articles connexes

JRebel, le redéploiement c'est à chaud !

·4 mins
Quand on développe des applications web Java EE, on passe généralement son temps à redéployer son application et redémarrer son conteneur… Heureusement on peut compter depuis un moment sur JRebel pour grandement augmenter sa productivité lors des développements en permettant le rechargement à chaud des modifications de façon plus poussé que le Hot Swap intégré à la JVM.

Commentaires archivés (3)

Discussion d'origine, conservée telle quelle. Elle est close.

Guillaume Renaudin

Salut JC !

Bon article et bon plugin ! Capté par ici, je sens que je vais en mettre un peu partout :)

Ca va sinon?

Ciao,
Guillaume.

Jean-Christophe GAY

Hey salut Guillaume !

Fais toi plaisir et n'hésites pas à te manifester si tu as un soucis :)

Laurent Hamonic

Merci pour ce rex, un bon petit plugin qui peut sauver la vie ...