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


    Chapitre 7. Configuration Maven

    7.1. Configuration des plugins Maven

    Pour personnaliser le comportement d'un plugin Maven, vous devez configurer celui-ci dans le POM du projet. Les sections suivantes présentent les différents moyens à votre disposition pour personnaliser la configuration d'un plugin Maven.

    7.1.1. Paramètres du plugin Configuration

    Les plugins Maven sont configurés par l'intermédiaire de propriétés définies par goals. Par exemple, si vous jetez un coup d'oeil au goal compile du plugin Maven Compiler, vous verrez une liste de paramètres de configuration, comme source, target, compilerArgument, fork, optimize, ... Maintenant, si vous regardez le goal testCompile, vous trouverez une liste différente de paramètres. Pour trouver la liste des paramètres de configuration d'un goal d'un plugin, vous pouvez utiliser le plugin Maven Help. Celui-ci permet d'afficher la description d'un plugin ou d'un goal en particulier.

    Pour afficher la description d'un plugin, utilisez le goal help:describe de la manière suivante à partir de la ligne de commande :

    $ mvn help:describe -Dcmd=compiler:compile
    [INFO] [help:describe {execution: default-cli}]
    [INFO] 'compiler:compile' is a plugin goal (aka mojo).
    Mojo: 'compiler:compile'
    compiler:compile
      Description: Compiles application sources
      Deprecated. No reason given

    Pour plus d'informations sur les paramètres de configuration disponibles, utilisez cette même commande en y ajoutant l'argument -Ddetail :

    $ mvn help:describe -Dcmd=compiler:compile -Ddetail
    [INFO] [help:describe {execution: default-cli}]
    [INFO] 'compiler:compile' is a plugin goal (aka mojo).
    Mojo: 'compiler:compile'
    compiler:compile
      Description: Compiles application sources
      Deprecated. No reason given
      Implementation: org.apache.maven.plugin.CompilerMojo
      Language: java
      Bound to phase: compile
    
      Available parameters:
    
        compilerArgument
          Sets the unformatted argument string to be passed to the compiler if fork
          is set to true.
          
          This is because the list of valid arguments passed to a Java compiler
          varies based on the compiler version.
          Deprecated. No reason given
    
        compilerArguments
          Sets the arguments to be passed to the compiler (prepending a dash) if
          fork is set to true.
          
          This is because the list of valid arguments passed to a Java compiler
          varies based on the compiler version.
          Deprecated. No reason given
    
        compilerId (Default: javac)
          The compiler id of the compiler to use. See this guide for more
          information.
          Deprecated. No reason given
    
        compilerVersion
          Version of the compiler to use, ex. '1.3', '1.5', if fork is set to true.
          Deprecated. No reason given
    
        debug (Default: true)
          Set to true to include debugging information in the compiled class files.
          Deprecated. No reason given
    
        encoding
          The -encoding argument for the Java compiler.
          Deprecated. No reason given
    
        excludes
          A list of exclusion filters for the compiler.
          Deprecated. No reason given
    
        executable
          Sets the executable of the compiler to use when fork is true.
          Deprecated. No reason given
    
        failOnError (Default: true)
          Indicates whether the build will continue even if there are compilation
          errors; defaults to true.
          Deprecated. No reason given
    
        fork (Default: false)
          Allows running the compiler in a separate process. If 'false' it uses the
          built in compiler, while if 'true' it will use an executable.
          Deprecated. No reason given
    
        includes
          A list of inclusion filters for the compiler.
          Deprecated. No reason given
    
        maxmem
          Sets the maximum size, in megabytes, of the memory allocation pool, ex.
          '128', '128m' if fork is set to true.
          Deprecated. No reason given
    
        meminitial
          Initial size, in megabytes, of the memory allocation pool, ex. '64',
          '64m' if fork is set to true.
          Deprecated. No reason given
    
        optimize (Default: false)
          Set to true to optimize the compiled code using the compiler's
          optimization methods.
          Deprecated. No reason given
    
        outputFileName
          Sets the name of the output file when compiling a set of sources to a
          single file.
          Deprecated. No reason given
    
        showDeprecation (Default: false)
          Sets whether to show source locations where deprecated APIs are used.
          Deprecated. No reason given
    
        showWarnings (Default: false)
          Set to true to show compilation warnings.
          Deprecated. No reason given
    
        source
          The -source argument for the Java compiler.
          Deprecated. No reason given
    
        staleMillis (Default: 0)
          Sets the granularity in milliseconds of the last modification date for
          testing whether a source needs recompilation.
          Deprecated. No reason given
    
        target
          The -target argument for the Java compiler.
          Deprecated. No reason given
    
        verbose (Default: false)
          Set to true to show messages about what the compiler is doing.
          Deprecated. No reason given
    

    Si vous désirez récupérer la liste des goals d'un plugin, vous pouvez exécuter le goal help:describe et lui passer un paramètre. Ce paramètre accepte soit un préfixe de plugin soit un groupId et un artifactId comme le montrent les exemples suivants :

    $ mvn help:describe -Dplugin=compiler
    [INFO] [help:describe {execution: default-cli}]
    [INFO] org.apache.maven.plugins:maven-compiler-plugin:2.0.2
    
    Name: Maven Compiler Plugin
    Description: Maven Plugins
    Group Id: org.apache.maven.plugins
    Artifact Id: maven-compiler-plugin
    Version: 2.0.2
    Goal Prefix: compiler
    
    This plugin has 2 goals:
    
    compiler:compile
      Description: Compiles application sources
      Deprecated. No reason given
    
    compiler:testCompile
      Description: Compiles application test sources
      Deprecated. No reason given
    

    Vous pouvez utiliser le groupId et l'artifactId du plugin pour obtenir la même liste de goals.

    $ mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin
    

    En passant l'argument -Ddetail au goal help:describe, vous demandez à Maven d'afficher tous les goals d'un plugin avec tous leurs paramètres.

    7.1.2. Ajouter des dépendances à un plugin

    Si vous désirez configurer un plugin pour qu'il utilise des versions spécifiques de ses dépendances, vous pouvez utiliser la balise dependencies. Quand le plugin s'exécute, il se lance avec un classpath contenant ses dépendances. L'Exemple 7.1, « Ajout d'une dépendance à un plugin » est un exemple de configuration de plugin qui surcharge les versions de ses dépendances et en ajoute une nouvelle pour faciliter l'exécution du goal.

    Exemple 7.1. Ajout d'une dépendance à un plugin

    <plugin>
      <groupId>com.agilejava.docbkx</groupId>
      <artifactId>docbkx-maven-plugin</artifactId>
      <version>2.0.9</version>
      <dependencies>
        <dependency>
          <groupId>docbook</groupId>
          <artifactId>docbook-xml</artifactId>
          <version>4.5</version>
        </dependency>
        <dependency>
          <groupId>org.apache.fop</groupId>
          <artifactId>fop-pdf-images</artifactId>
          <version>1.3</version>
        </dependency>
        <dependency>
          <groupId>org.apache.fop</groupId>
          <artifactId>fop-pdf-images-res</artifactId>
          <version>1.3</version>
          <classifier>res</classifier>
        </dependency>
        <dependency>
          <groupId>pdfbox</groupId>
          <artifactId>pdfbox</artifactId>
          <version>0.7.4-dev</version>
          <classifier>dev</classifier>
        </dependency>
      </dependencies>
    </plugin>

    7.1.3. Configurer les paramètres globaux d'un plugin

    Pour affecter une valeur à un paramètre de configuration sur un projet, utilisez le fichier XML de l'Exemple 7.2, « Configurer un plugin Maven ». À moins que cette configuration ne soit surchargée par une configuration de paramètre de plugin plus spécifique, Maven utilisera les valeurs définies dans la balise plugin pour tous les goals exécutés par ce plugin.

    Exemple 7.2. Configurer un plugin Maven

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <source>1.5</source>
        <target>1.5</target>
      </configuration>
    </plugin>

    7.1.4. Modifier les paramètres spécifiques à une exécution

    Vous pouvez configurer les paramètres d'un plugin spécifiquement pour l'exécution d'un goal Maven. L'Exemple 7.3, « Surcharge des paramètres de configuration d'une exécution » montre comment passer un paramètre de configuration au goal exécuté par le plugin AntRun durant la phase de validation. Cette exécution héritera ainsi des paramètres de la balise configuration du plugin dont les valeurs seront fusionnées avec celles définies dans l'exécution personnalisée.

    Exemple 7.3. Surcharge des paramètres de configuration d'une exécution

    <plugin>
      <artifactId>maven-antrun-plugin</artifactId>
      <executions>
        <execution>
          <phase>validate</phase>
          <goals>
            <goal>run</goal>
          </goals>
          <configuration>
            <tasks>
              <echo>${PATH}=${env.PATH}</echo>
              <echo>User's Home Directory: ${user.home}</echo>
              <echo>Project's Base Director: ${basedir}</echo>
            </tasks>
          </configuration>
        </execution>
      </executions>
    </plugin>
    

    7.1.5. Configuration des paramètres par défaut pour une exécution en ligne de commande

    Depuis Maven 2.2.0, vous pouvez fournir des paramètres de configuration pour les goals qui sont exécutés à partir de la ligne de commande. Pour cela, utilisez un id spécial pour l'exécution, default-cli. L'Exemple 7.4, « Configuration d'un plugin pour une exécution en ligne de commande » montre comment rattacher un goal à la phase package du cycle de vie qui produit le binaire. Cet exemple configure également l'exécution default-cli du plugin Assembly pour qu'il utilise le descripteur jar-with-dependencies. Le descripteur bin.xml sera utilisé durant le cycle de vie, et jar-with-dependencies sera utilisé lors de l'exécution de la commande mvn assembly:assembly à partir de la console.

    Exemple 7.4. Configuration d'un plugin pour une exécution en ligne de commande

    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <configuration>
        <appendAssemblyId>false</appendAssemblyId>
      </configuration>
      <executions>
        <execution>
          <id>assemble-binary</id>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
          <configuration>
            <descriptors>
              <descriptor>src/main/assembly/bin.xml</descriptor>
            </descriptors>
          </configuration>
        </execution>
        <execution>
          <id>default-cli</id>
          <configuration>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
          </configuration>
        </execution>
      </executions>
    </plugin>
    

    7.1.6. Configuration des paramètres pour les goals rattachés au cycle de vie par défaut

    Depuis Maven 2.2.0, si vous désirez personnaliser le comportement d'un goal qui est déjà rattaché au cycle de vie par défaut, vous pouvez utiliser un id spécial pour l'exécution, "default-<goal>". Ainsi, vous pouvez par exemple personnaliser le comportement du goal jar du plugin Jar qui est rattaché à la phase package du cycle de vie par défaut. Vous pouvez personnaliser les paramètres de configuration d'une exécution comme le présente l'Exemple 7.5, « Configuration d'un paramètre pour l'exécution d'un goal par défaut ».

    Exemple 7.5. Configuration d'un paramètre pour l'exécution d'un goal par défaut

    <plugin>
      <artifactId>maven-jar-plugin</artifactId>
      <executions>
        <execution>
          <id>default-jar</id>
          <configuration>
            <excludes>
              <exclude>**/somepackage/*</exclude>
            </excludes>
          </configuration>
        </execution>
        <execution>
          <id>special-jar</id>
          <phase>package</phase>
          <goals>
            <goal>jar</goal>
          </goals>
          <configuration>
            <includes>
              <include>**/sompackage/*</include>
            </includes>
            <classifier>somepackage</classifier>
          </configuration>
        </execution>
      </executions>
    </plugin>

    Dans cet exemple, le goal par défaut jar est configuré pour exclure le contenu d'un certain package. Un autre goal, jar, est rattaché à la phase package pour créer un fichier JAR qui contient seulement le contenu d'un package spécifique.

    Configurer les paramètres des goals par défaut peut aussi être intéressant si vous avez besoin de configurer deux goals avec des valeurs de configuration différentes pour certains paramètres. L'Exemple 7.6, « Configurer deux paramètres d'un goal d'un plugin » montre comment configurer le goal resources:resources pour qu'il ne tienne pas compte des répertoires vides tout en configurant le goal resources:testResources pour qu'il les prenne en compte.

    Exemple 7.6. Configurer deux paramètres d'un goal d'un plugin

    <plugin>
      <artifactId>maven-resources-plugin</artifactId>
      <executions>
        <execution>
          <id>default-resources</id>
          <configuration>
            <includeEmptyDirs>false</includeEmptyDirs>
          </configuration>
        </execution>
        <execution>
          <id>default-testResources</id>
          <configuration>
            <includeEmptyDirs>true</includeEmptyDirs>
          </configuration>
        </execution>
      </executions>
    </plugin>