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.3. Configuration d'un préfixe de Plugin

    Spécifier à chaque fois le groupId, l'artifactId, la version et goal est un peu lourd (c'est le moindre que l'on puisse dire). Pour éviter cela, vous avez la possibilité d'utiliser un préfixe de plugin. Par exemple, au lieu de taper :

    $ mvn org.apache.maven.plugins:maven-jar-plugin:2.3:jar

    Vous pouvez utiliser le préfixe jar. Ainsi, la ligne de commande devient beaucoup plus digeste : mvn jar:jar. Comment Maven sait-il transformer jar:jar en org.apache.mven.plugins:maven-jar:2.3 ? Maven regarde dans un fichier du dépôt Maven pour obtenir la liste des plugins pour un groupId spécifique. Par défaut, Maven est configuré pour rechercher les plugins dans deux groupes : org.apache.maven.plugins et org.codehaus.mojo. Lorsque vous spécifiez un nouveau préfixe comme mvn hibernate3:hbm2ddl, Maven scanne les métadonnées du dépôt Maven à la recherche du plugin approprié. Maven commence par parcourir les groupes org.apache.maven.plugins à la recherche du préfixe hibernate3. S'il n'y trouve pas de préfixe hibernate3, il continuera en parcourant les métadonnées du groupe org.codehaus.mojo.

    Lorsque Maven parcourt les métadonnées d'un groupId, il récupére deuis le dépôt Maven le fichier XML qui contient les métadonnées des artefacts de ce groupe. Ce fichier XML est spécifique à chaque dépôt. Si vous n'avez pas configuré de dépôt, Maven se contentera de chercher dans les métadonnées du groupe org.apache.maven.plugins dans votre dépôt Maven local (~/.m2/repository) dans le fichier org/apache/maven/plugins/maven-metadata-central.xml. L'Exemple 17.4, « Métadonnées Maven du groupe Maven Plugin » présente une partie du fichier XML maven-metadata-central.xml du groupe org.apache.maven.plugin.

    Exemple 17.4. Métadonnées Maven du groupe Maven Plugin

    <?xml version="1.0" encoding="UTF-8"?>
    <metadata>
      <plugins>
        <plugin>
          <name>Maven Clean Plugin</name>
          <prefix>clean</prefix>
          <artifactId>maven-clean-plugin</artifactId>
        </plugin>
        <plugin>
          <name>Maven Compiler Plugin</name>
          <prefix>compiler</prefix>
          <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
        <plugin>
          <name>Maven Surefire Plugin</name>
          <prefix>surefire</prefix>
          <artifactId>maven-surefire-plugin</artifactId>
        </plugin>
        ...
      </plugins>
    </metadata>

    Comme vous pouvez le voir dans l'Exemple 17.4, « Métadonnées Maven du groupe Maven Plugin », c'est ce fichier maven-metadata-central.xml qui rend possible l'exécution de la commande mvn surefire:test. Maven parcourt org.apache.maven.plugins et org.codehaus.mojo : les plugins du groupe org.apache.maven.plugins sont considérés comme des plugins du cœur Maven, alors que les plugins du groupe org.codehaus.mojo sont considérés comme des plugins moins importants. Le projet Apache Maven gère le groupe org.apache.maven.plugins, et c'est une communauté open source indépendante qui a la charge du projet Codehaus Mojo. Si vous désirez publier vos plugins avec votre groupId, et que Maven parcourt automatiquement le préfixe de plugin de votre nouveau groupId, vous pouvez personnaliser les groupes traités par Maven dans vos fichiers Maven de configuration personnelle.

    Pour exécuter votre goal echo first-maven-plugin en utilisant la commande first:echo, ajoutez le groupId org.sonatype.mavenbook.plugins dans votre fichier ~/.m2/settings.xml comme le montre l'Exemple 17.5, « Personnaliser les groupes de plugins dans les Settings Maven ». Ainsi, un nouveau groupe sera ajouté en début de liste des groupes analysés par Maven.

    Exemple 17.5. Personnaliser les groupes de plugins dans les Settings Maven

    <settings>
      ...
      <pluginGroups>
        <pluginGroup>org.sonatype.mavenbook.plugins</pluginGroup>
      </pluginGroups>
    </settings>

    Ceci fait, vous pouvez maintenant exécuter votre goal par l'intermédiaire de la commande mvn first:echo à partir de n'importe quel répertoire. Vous constaterez que Maven saura interpréter correctement votre préfixe. Cela fonctionne car le projet respecte certaines conventions de nommage. Si votre projet plugin a un artifactId qui respecte le format maven-first-plugin ou first-maven-plugin, Maven affectera automatiquement le préfixe first à votre plugin. En d'autres termes, lorsque le plugin Maven Plugin a généré le descripteur de votre plugin et que vous n'avez pas spéficifié de goalPrefix dans votre projet, le goal plugin:descriptor récupérera le préfixe de votre plugin à partir de son artifactId lorsqu'il suit l'un des formats suivants :

    • ${prefix}-maven-plugin, OU

    • maven-${prefix}-plugin

    Si vous désirez définir explicitement un préfixe de plugin, you avez besoin de configurer le plugin Maven Plugin. Le plugin Maven Plugin est responsable de la construction du descripteur de plugin et doit également effectuer certaines tâches durant les phases de packaging et de chargement. Le plugin Maven Plugin est configurable comme n'importe quel autre plugin via la balise build. Pour configurer le préfixe de votre plugin, ajoutez le code XML dans la balise build du projet first-maven-plugin.

    Exemple 17.6. Configuration d'un préfixe de plugin

    <?xml version="1.0" encoding="UTF-8"?><project>
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.sonatype.mavenbook.plugins</groupId>
      <artifactId>first-maven-plugin</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>maven-plugin</packaging>
      <name>first-maven-plugin Maven Mojo</name>
      <url>http://maven.apache.org</url>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-plugin-plugin</artifactId>
            <version>2.3</version>
            <configuration>
              <goalPrefix>blah</goalPrefix>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-plugin-api</artifactId>
          <version>2.0</version>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>

    L'Exemple 17.6, « Configuration d'un préfixe de plugin » configure le préfixe du plugin pour qu'il prenne la valeur blah. Si vous avez ajouté le groupe org.sonatype.mavenbook.plugins à la liste des groupes pluginGroups de votre fichier ~/.m2/settings.xml, vous devriez pouvoir exécuter EchoMojo en lançant la commande suivante mvn echo:blah.