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.3.2. Configuration du Mojo

    Vient ensuite la déclaration de chaque Mojo. La balise plugin contient une balise mojos possèdant un élément par mojo présent dans le plugin. Chaque balise mojo contient les éléments suivants :

    goal

    Il s'agit du nom du goal. Si nous prenons l'exemple du goal compiler:compile, compiler est le goalPrefix et compile désigne le nom du goal.

    description

    Cette balise contient la description du goal. Celle-ci est utilisée par le plugin Help pour produire la documentation du plugin.

    requiresDirectInvocation

    Si vous affectez cette propriété à true, le goal pourra seulement s'exécuter s'il est appelé directement en la ligne de commande par un utilisateur. Si quelqu'un essaye de rattacher ce goal à une phase du cycle de vie dans un POM, Maven affichera un message d'erreur. La valeur par défaut pour cette propriété est false.

    requiresProject

    Spécifie si le goal peut être exécuté en dehors d'un projet. Si cette propriété est affectée à true (la valeur par défaut), le goal nécessitera un POM.

    requiresReports

    Si vous créez un plugin qui nécessite la présence de rapports, par exemple, si vous écrivez un plugin qui agrège les informations à partir de plusieurs rapports, vous pouvez setter la propriété requiresReports à true. La valeur par défaut de cette propriété est false.

    aggregator

    Un descripteur de Mojo dont la valeur de la balise aggregator est affectée à true est censé n're lancé qu'une seule fois durant une exécution Maven. Ce flag a été créé pour donner la possibilité aux développeurs de plugins d'agréger la sortie d'une série de builds. Par exemple, on peut utiliser celui-ci pour créer un plugin qui agrège un rapport sur tous les projets d'un build. Un goal qui possède ce flag aggregator positionné à true doit être lancé uniquement à partir d'un projet haut-niveau d'un build Maven. La valeur par défaut de cette propriété est false. Elle est marquée comme deprecated pour les prochaines releases.

    requiresOnline

    Spécifie si un goal donné peut s'exécuter en mode hors connexion (option -o de la ligne de commande). Si un goal nécessite l'utilisation de ressources réseau et que ce flag est activé, Maven affichera une erreur si le goal est exécuté en mode hors connexion. La valeur par défaut de cette propriété est false.

    inheritedByDefault

    Si cette propriété est positionnée à true, un mojo configuré dans un projet parent reprendra cette configuration pour le projet enfant. Si vous configurez un mojo pour s'exécuter dans une phase spécifique d'un projet parent et que ce flag est activé, cette exécution sera héritée pour le projet enfant. Cette propriété est positionnée par défaut à false.

    phase

    Si vous ne rattachez pas ce goal à une phase spécifique, cet élément définit la phase par défaut du mojo. Si vous ne précisez pas cet élément, Maven demandera à l'utilisateur de spécifier explicitement la phase dans le POM.

    implementation

    Il s'agit de la classe du Mojo à instancier par Maven. Cette propriété est une propriété de composant Plexus (définie dans le ComponentDescriptor de Plexus).

    language

    Java est le langage par défaut d'un Mojo Maven. Cette propriété contrôle le ComponentFactory utilisé par Plexus pour créer et instancier le Mojo. Ce chapitre se concentre sur l'écriture de plugin Java, cependant notez qu'il est possible d'utiliser d'autres langages : Groovy, Beanshell, Ruby... Dans le cas où vous utiliseriez un de ces langages alternatifs, vous auriez à configurer cet élément.

    instantiationStrategy

    Cette propriété est une propriété de configuration de composants Plexus, elle permet de contrôler la stratégie utilisée par Plexus pour gérer ses instances de composants. Dans Maven, tous les mojos sont configurés avec une instantiationStrategy ayant pour valeur per-lookup. Une nouvelle instance du composant (mojo) est créée à chaque fois qu'on demande à Plexus de nous le fournir.

    executionStrategy

    Il s'agit du choix de la stratégie utilisée par Maven pour exécuter un Mojo. Les différentes valeurs utilisables dans cet élément sont once-per-session et always. Note : cette propriété est dorénavant deprecated et n'est plus utilisée par Maven, elle sera supprimée dans les prochaines releases.

    parameters

    Cette balise décrit chacun des paramètres du Mojo. Quel est son nom ? Quel est son type ? Est-il obligatoire ? Chaque paramètre possède les éléments suivants :

    name

    Il s'agit du nom du paramètre (exemple baseDirectory)

    type

    Il s'agit du type Java du paramètre (exemple java.io.File)

    required

    Indique si le paramètre est obligatoire. Affecté à true, le paramètre doit obligatoirement être passé au goal exécuté avec une valeur non nulle.

    editable

    Si un paramètre n'est pas éditable (si cette propriété est positionnée à false), alors la valeur de ce paramètre ne pourra pas être modifiée dans un POM. Par exemple, si le descripteur de plugin définit la valeur de la propriété buildDirectory à ${basedir}, aucun POM ne pourra pas surcharger cette valeur.

    description

    Courte description utilisée lors de la génération de la documentation du plugin (utilisée par le plugin Help)

    configuration

    Cet élément fournit les valeurs par défaut de tous les paramètres du Mojo utilisant la notation pour les expressions Maven. Cet exemple fournit la valeur par défaut des paramètres Mojo baseDir et buildDirectory. Dans cet élément, l'implémentation spécifie le type (java.io.File), la valeur du paramètre peut contenir soit une valeur par défaut en dur soit une référence à une propriété Maven.

    requirements

    C'est ici que le descripteur de plugin devient intéressant. Un Mojo est un composant géré par Plexus. Grâce à cela, il est possible de référencer n'importe quel autre composant géré par Plexus. Cette propriété permet de définir des dépendances vers d'autres composants Plexus.

    Même s'il est intéressant de savoir comment lire un descripteur de plugin, vous ne devriez pratiquement jamais avoir à en écrire un. Les descripteurs de plugin sont générés automatiquement à partir d'annotations présentes dans le code source du Mojo.