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


    5.5.3. Classifieurs de plateforme

    Supposons que vous avez une bibliothèque ou un projet qui produit des artefacts spécifiques selon la plateforme. Même si Java est indépendant de la plateforme, parfois vous pouvez avoir besoin d'écrire du code qui invoque du code natif, spécifique à une plateforme. Vous pouvez aussi avoir écrit du code C compilé avec le plugin Maven Native et que vous voulez produire un artefact qualifié selon la plateforme sur laquelle il a été construit. Vous pouvez définir un classificateur avec le plugin Maven Assembly ou le plugin Maven Jar. Le fichier pom.xml suivant produit un artefact qualifié grâce à des profils activés en fonction du système d'exploitation. Pour plus d'informations sur le plugin Maven Assembly vous pouvez consulter le Chapitre 8, Maven Assemblies.

    Exemple 5.8. Qualification d'artefacts avec des profils activés selon la plateforme

    <project>
      ...
      <profiles>
        <profile>
          <id>windows</id>
          <activation>
            <os>
              <family>windows</family>
            </os>
          </activation>
          <build>
            <plugins>
              <plugin
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                  <classifier>win</classifier>
                </configuration>
              </plugin>
            </plugins>
          </build>
        </profile>
        <profile>
          <id>linux</id>
          <activation>
            <os>
              <family>unix</family>
            </os>
          </activation>
          <build>
            <plugins>
              <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                  <classifier>linux</classifier>
                </configuration>
              </plugin>
            </plugins>
          </build>
        </profile>
      </profiles>
    </project>
    


    Si le système d'exploitation fait partie de la famille Windows, ce fichier pom.xml qualifie l'artefact Jar avec "-win". Si le système d'exploitation est un membre de la famille Unix, l'artefact est qualifié avec "-linux". Ce fichier pom.xml permet donc d'ajouter des classificateurs aux artefacts, mais il est plus verbeux que nécessaire, car il recopie la configuration du plugin Maven Jar dans les deux profils. Cet exemple pourrrait être réécrit en utilisant des variables pour réduire la redondance :

    Exemple 5.9. Qualification des artefacts avec des profils activés selon la plateforme d'exécution et en utilisant des variables

    <project>
      ...
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <classifier>${envClassifier}</classifier>
            </configuration>
          </plugin>
        </plugins>
      </build>
      ...
      <profiles>
        <profile>
          <id>windows</id>
          <activation>
            <os>
              <family>windows</family>
            </os>
          </activation>
          <properties>
            <envClassifier>win</envClassifier>
          </properties>
        </profile>
        <profile>
          <id>linux</id>
          <activation>
            <os>
              <family>unix</family>
            </os>
          </activation>
          <properties>
            <envClassifier>linux</envClassifier>
          </properties>
        </profile>
      </profiles>
    </project>
    


    Dans ce fichier pom.xml, chaque profil n'a pas besoin d'inclure une balise build pour configurer le plugin Jar. Au lieu de cela, le profil est activé par la famille à laquelle appartient le système d'exploitation, et valorise la propriété envClassifier soit à win soit à linux. Cette propriété envClassifier est référencée dans la balise build du fichier pom.xml pour ajouter un classificateur à l'artefact JAR produit par le projet. Ainsi l'artefact JAR produit s'appellera ${finalName}-${envClassifier}.jar et sera utilisé comme dépendance grâce à la syntaxe suivante :

    Exemple 5.10. Dépendance vers un artefact qualifié

        <dependency>
          <groupId>com.mycompany</groupId>
          <artifactId>my-project</artifactId>
          <version>1.0</version>
          <classifier>linux</classifier>
        </dependency>