Le cycle de vie de son build Maven

This post is also available in: en

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 !

comments powered by Disqus