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.5. Paramètres d'un Mojo

    Cette notion est aussi importante que celles de la méthode execute() et des annotations de Mojo. Un Mojo est configuré par l'intermédiaire de paramètres. Cette section se concentre sur les sujets et la configuration de ces paramètres de Mojo.

    17.5.1. Affecter des valeurs aux paramètres de Mojo

    Dans notre EchoMojo, nous avons déclaré un paramètre 'message' en utilisant l'annotation suivante :

    /**
     * Any Object to print out.
     * @parameter
     *       expression="${echo.message}"
     *       default-value="Hello Maven World"
     */
    private Object message;
    

    L'expression par défaut pour ce paramètre est ${echo.message}. Cela veut dire que Maven essayera d'utiliser la valeur de la propriété echo.message pour affecter la valeur du message. Si cette propriété est nulle, le paramètre prendra la valeur définie grâce à l'attribut default-value de l'annotation @parameter. Au lieu d'utiliser la propriété echo.message, vous pouvez configurer une valeur pour ce message directement à partir du POM de votre projet.

    Plusieurs moyens existent pour renseigner la valeur du paramètre 'message' de notre EchoMojo. Premièrement, vous pouvez passer une valeur à partir de la ligne de commande en utilisant la syntaxe suivante (à supposer que vous ayez ajouté org.sonatype.mavenbook.plugins à votre pluginGroups) :

    $ mvn first:echo -Decho.message="Hello Everybody"

    Vous pouvez également spécifier la valeur de ce message en définissant une propriété dans votre POM ou dans votre fichier settings.xml.

    <project>
      ...
      <properties>
        <echo.message>Hello Everybody</echo.message>
      </properties>
    </project>
    

    Ce paramètre peut également être configuré directement par l'intermédiaire d'une valeur de configuration de votre plugin. Si vous voulez personnaliser directement le paramètre 'message', vous pouvez utiliser la configuration suivante pour votre build. Celle-ci court-circuite la propriété echo.message et renseigne le paramètre du Mojo à partir de la configuration du plugin.

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <groupId>org.sonatype.mavenbook.plugins</groupId>
            <artifactId>first-maven-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
            <configuration>
              <message>Hello Everybody!</message>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>

    Si vous désirez exécuter votre EchoMojo deux fois dans différentes phases du cycle de vie, et si vous voulez configurer le paramètre 'message' avec deux valeurs différentes, vous pouvez configurer la valeur de ce paramètre à partir de la balise execution dans votre POM de la manière suivante :

    <build>
      <build>
        <plugins>
          <plugin>
            <groupId>org.sonatype.mavenbook.plugins</groupId>
            <artifactId>first-maven-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
            <executions>
              <execution>
                <id>first-execution</id>
                <phase>generate-resources</phase>
                <goals>
                  <goal>echo</goal>
                </goals>
                <configuration>
                  <message>The Eagle has Landed!</message>
                </configuration>
              </execution>
              <execution>
                <id>second-execution</id>
                <phase>validate</phase>
                <goals>
                  <goal>echo</goal>
                </goals>
                <configuration>
                  <message>${project.version}</message>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </build>

    Même si ce dernier exemple est assez verbeux, il illustre la flexibilité de Maven. Dans l'exemple précédent, vous avez rattaché l'EchoMojo aux phases validate et generate-resources du cycle de vie par défaut. La première balise execution est rattachée à la phase generate-resources, elle fournit la valeur suivante à la propriété 'message' : "The Eagle has Landed!". La seconde balise execution est rattachée à la phase validate, elle fournit une référence à la propriété ${project.version}. Lorsque vous exécutez la commande mvn install sur ce projet, vous verrez que le goal first:echo s'exécute deux fois et affiche deux messages différents.