Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    11.6. Plugins et le cycle de vie Maven

    Dans le chapitre Chapitre 4, Cycle de vie du build, nous avons vu que les cycles de vie peuvent être personnalisés en fonction du type de packaging. Un plugin peut soit introduire un nouveau type de packaging, soit personnaliser le cycle de vie. Dans cette section, nous allons voir comment personnaliser le cycle de vie à partir d'un plugin Maven. Nous verrons également comment dire à un Mojo de d'exécuter un cycle de vie parallèle.

    11.6.1. Exécution dans un cycle de vie parallèle

    Imaginons que vous devez écrire un plugin qui dépend du résultat du build précédent. Par exemple, peut-être que le goal du ZipMojo ne peut être lancé que si un élément du résultat existe pour être inclus dans l'archive . Il est possible de préciser des goal prérequis en utilisant l'annotation @execute sur un Mojo. Cette annotation forcera Maven à lancer un build parallèle et exécuter un goal ou un cycle de vie dans cette seconde instance de Maven sans que tout cela affecte le build courant. Si vous avez écrit un Mojo que vous exécutez une fois par jour pour lancer la commande mvn install et packager le résultat sous un format de distribution personnalisé. Votre descripteur de Mojo peut demander à Maven d'exécuter le cycle de vie par défaut jusqu'à la phase install et d'exposer le résultat de ce projet dans votre mojo en utilisant la propriété ${executedProject}. Vous pouvez ensuite référencer cette propriété dans un projet et effectuer ainsi un traitement à posteriori.

    Autre possibilité, si vous avez un goal qui effectue quelque chose de complètement indépendant du cycle de vie par défaut. Imaginons quelque chose de complètement inattendu, vous disposez peut-être d'un goal qui transforme un fichier WAV en MP3 en utilisant quelque chose comme LAME. Avant de faire cela, vous voulez parcourir un cycle de vie qui transforme un fichier MIDI en un fichier WAV (vous pouvez faire faire tout ce que vous voulez à Maven, et cet exemple n'est pas aussi "tiré par les cheveux" qu'on pourrait le croire). Vous avez donc créé un cycle de vie midi-sound et vous voulez utiliser le résultat de la phase install de ce cycle de vie dans une application web qui possède un type de packaging war. Comme votre projet est exécuté dans le cycle de vie war, vous devez avoir un goal qui va lancer votre cycle de vie midi-source en parallèle de ce build. Pour cela, vous devez annoter votre mojo avec @execute lifecycle="midi-source" phase="install".

    @execute goal="<goal>"

    Cette annotation provoque l'exécution d'un goal donné avant celui annoté. Le nom du goal doit être donné en utilisant la notation prefix:goal.

    @execute phase="<phase>"

    Un cycle de vie alternatif, spécifié par la phase donnée, sera exécuté en parallèle avant de reprendre l'exécution courante.

    @execute lifecycle="<lifecycle>" phase="<phase>"

    Cette annotation provoque l'exécution du cycle de vie alternatif. Un cycle de vie personnalisé peut être défini dans le fichier META-INF/maven/lifecycles.xml.