| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
Dans la section précédente, nous vous avons présenté comment créer un profil qui redéfinit le comportement par
défaut selon un environnement cible spécifique. Le build précédent était configuré par défaut pour le développement,
et le profil production existe pour apporter les éléments de configuration propres à
l'environnement de production. Que se passe t'il si vous devez adapter votre build selon le système d'exploitation
ou la version du JDK ? Maven fournit un mécanisme pour "activer" un profil selon différents
paramètres liés à l'environnement, c'est ce qu'on appelle l'activation de profil.
Prenons l'exemple suivant, supposons que nous avons une bibliothèque Java dont certaines fonctions ne sont disponibles que pour Java 6 et son moteur de scripts défini dans la JSR-223. Une fois que vous avez séparé le bloc de code qui utilise le moteur de scripts dans un projet Maven à part, vous voulez que les personnes qui utilisent Java 5 puissent construire votre projet sans essayer de construire l'extension spécifique Java 6. Vous pouvez faire cela au moyen d'un profil Maven qui ajoute le module de gestion des scripts uniquement lorsque le build se fait sur un JDK Java 6. Tout d'abord, jetons un oeil à la structure des répertoires de notre projet et comment nous souhaitons que les développeurs construisent notre système.
Lorsque l'on exécute la commande mvn install avec un JDK Java 6, nous
voulons que le build construise le projet simple-script. Si par contre cette commande est
exécutée sur Java 5 il faut exclure le projet simple-script du build. Si vous n'excluez pas le
projet simple-script de votre build en Java 5, celui-ci va échouer car Java 5 ne fournit pas la
classe ScriptEngine. Étudions plus en détail le fichier pom.xml du
projet de bibliothèque :
Exemple 11.3. Inclusion dynamique de sous-modules par activation de profil
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.sonatype.mavenbook</groupId> <artifactId>simple</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>simple</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <profiles> <profile> <id>jdk16</id> <activation> <jdk>1.6</jdk> </activation> <modules> <module>simple-script</module> </modules> </profile> </profiles> </project>
Si vous exécutez la commande mvn install en Java 6, vous vous apercevrez que Maven
descend dans le sous-répertoire simple-script pour y construire le projet
simple-script. Si vous exécutez la même commande mvn install en Java 5, le
build n'essayera pas de construire le sous-module simple-script. Analysons cette configuration
d'activation en détail :
|
La balise |
|
|
Nous ajoutons le module |
L'activation contient une ou plusieurs conditions sur les versions du JDK, les systèmes d'exploitation ou des propriétés. Un profil est activé lorsque toutes les conditions d'activation sont satisfaites. Par exemple, un profil peut indiquer comme conditions d'être sur un système d'exploitation Windows avec un JDK version 1.4. Ce profil ne sera donc activé que si le build est exécuté sur une machine Windows avec Java 1.4. Si le profil est actif, alors tous ses éléments surchargent les éléments correspondants du projet comme si ce profil était inclus via l'argument -P en ligne de commande. L'exemple suivant présente un profil qui n'est activé que par une combinaison très spécifique de propriétés, de version du JDK et de système d'exploitation.
Exemple 11.4. Paramètres d'activation du profil : version du JDK, système d'exploitation et propriétés
<project>
...
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>false</activeByDefault>
<jdk>1.5</jdk>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
<property>
<name>mavenVersion</name>
<value>2.0.5</value>
</property>
<file>
<exists>file2.properties</exists>
<missing>file1.properties</missing>
</file>
</activation>
...
</profile>
</profiles>
</project>
L'exemple précédent définit un ensemble très précis de paramètres d'activation. Regardons chacun d'entre eux plus en détail :
|
La balise |
|
|
Ce profil n'est actif que pour les versions du JDK commençant par "1.5". Ce qui inclut "1.5.0_01" et "1.5.1". |
|
|
Ce profil cible aussi une version très spécifique de Windows XP, la version 5.1.2600 sur une plateforme 32-bit. Si votre projet utilise le plugin natif pour compiler du code en C, vous risquez de vous retrouver à écrire plusieurs projets suivant les plateformes. |
|
|
La balise |
|
|
La balise |