| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
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>