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


    8.4. Optimiser les plugins

    Si nous regardons les configurations des différents plugins, nous pouvons remarquer la réplication en plusieurs endroits des dépendances HSQLDB. Malheureusement, dependencyManagement ne s'applique pas aux dépendances des plugins, mais nous pouvons tout de même utiliser une propriété pour uniformiser les versions. Les projets Maven multimodule complexes ont tendance à définir toutes les versions dans le POM de plus haut niveau. Ce POM de plus haut niveau devient le point central pour les modifications qui impactent tout le projet. Voyez les numéros de versions comme des chaînes de caractères dans une classe Java. Si vous répétez constamment une phrase, vous allez probablement en faire une variable afin de n'avoir à la modifier qu'à un seul endroit lorsque vous devrez la changer. Remonter la version de HSQLDB dans une propriété du POM de plus haut niveau se fait au travers de la balise XML properties :

    <project>
      ...
      <properties>
        <hibernate.annotations.version>3.3.0.ga</hibernate.annotations.version>
        <hsqldb.version>1.8.0.7</hsqldb.version>
      </properties>
      ...
    </project>

    Nous pouvons noter que la configuration de hibernate3-maven-plugin est dupliquée dans les modules simple-webapp et simple-command. Il est possible de gérer la configuration des plugins dans le POM de plus haut niveau de la même manière que pour la gestion des dépendances avec la section dependencyManagement de ce POM. Pour ce faire, nous allons utiliser la balise XML pluginManagement sous la balise XML build du POM de plus haut niveau :

    <project>
      ...
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                <source>1.5</source>
                <target>1.5</target>
              </configuration>
            </plugin>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>hibernate3-maven-plugin</artifactId>
              <version>2.1</version>
              <configuration>
                <components>
                  <component>
                    <name>hbm2ddl</name>
                    <implementation>annotationconfiguration</implementation>
                  </component>
                </components>
              </configuration>
              <dependencies>
                <dependency>
                  <groupId>hsqldb</groupId>
                  <artifactId>hsqldb</artifactId>
                  <version>${hsqldb.version}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
      ...
    </project>