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


    17.4.2. Un simple Mojo Java

    Dans ce chapitre, nous allons vous présenter comment écrire des Mojos en Java. Chaque Mojo de votre projet doit implémenter l'interface org.apache.maven.plugin.Mojo, l'exemple suivant présente une classe Mojo qui implémente cette interface Mojo par l'intermédiaire de la classe org.apache.maven.plugin.AbstractMojo. Avant de rentrer dans le code de ce Mojo, commençons par regarder les méthodes de l'interface Mojo :

    void setLog( org.apache.maven.monitor.logging.Log log )

    Chaque implémentation de Mojo doit fournir un moyen de communiquer son avancement. L'exécution du goal a t-elle réussi ? Ou, au contraire, une erreur est-elle survenue durant l'exécution du goal ? Lorsque Maven charge et exécute un Mojo, il appelle la méthode setLog() et passe ainsi au plugin ainsi un journal pour y écrire ses traces.

    protected Log getLog()

    Comme nous venons de voir, Maven appelle la méthode setLog() avant d'exécuter votre Mojo, celui-ci peut donc récupérer le journal injecté par l'intermédiaire de la méthode getLog(). Au lieu d'afficher l'avancement sur la sortie standard ou dans la console, il est préférable d'utiliser les méthodes de l'objet Log.

    void execute() throws org.apache.maven.plugin.MojoExecutionException

    Cette méthode est appelée par Maven au moment de lancer l'exécution du goal.

    L'interface Mojo est responsable de deux choses : exécuter un goal et en tracer les résultats. Lorsque vous écrivez un plugin, vous pouvez faire hériter vos Mojos de la classe AbstractMojo. AbstractMojo implémente les méthodes setLog() et getLog(). Il vous reste donc à implémenter la méthode execute() qui est déclarée comme abstraite dans cette classe mère. L'Exemple 17.3, « Un simple EchoMojo » présente une implémentation simple d'un Mojo qui se contente d'afficher un message dans la console.

    Exemple 17.3. Un simple EchoMojo

    package org.sonatype.mavenbook.plugins;
    
    import org.apache.maven.plugin.AbstractMojo;
    import org.apache.maven.plugin.MojoExecutionException;
    import org.apache.maven.plugin.MojoFailureException;
    
    /**
     * Echos an object string to the output screen.
     * @goal echo
     * @requiresProject false
     */
    public class EchoMojo extends AbstractMojo
    {
        /**
         * Any Object to print out.
         * @parameter expression="${echo.message}" default-value="Hello World..."
         */
        private Object message;
    
        public void execute()
            throws MojoExecutionException, MojoFailureException
        {
            getLog().info( message.toString() );
        }
    }
    

    Si vous créez ce Mojo dans le répertoire ${basedir} sous src/main/java à l'emplacement org/sonatype/mavenbook/mojo/EchoMojo.java dans le projet créé précédemment et que vous exécutez la commande mvn install, vous devriez être capable d'appeler votre directement goal à partir de la ligne de commande :

    $ mvn org.sonatype.mavenbook.plugins:first-maven-plugin:1.0-SNAPSHOT:echo

    Cette (longue) ligne de commande est un simple appel à mvn suivi d'un argument : groupId:artifactId:version:goal. Lorsque vous exécutez cette ligne de commande, vous devriez voir apparaître le message "Hello Maven World..." dans votre console. Pour personnaliser ce message, vous pouvez passer le paramètre suivant à cette même ligne de commande :

    $ mvn org.sonatype.mavenbook.plugins:first-maven-plugin:1.0-SNAPSHOT:echo \
                 -Decho.message="The Eagle has Landed"

    Cette ligne de commande exécute le goal EchoMojo et affiche le message "The Eagle has Landed".