| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
Les profils encouragent la portabilité du build. Si vous avez besoin de configurer avec délicatesse votre
build pour qu'il puisse s'exécuter sur différentes plateformes ou pour construire différents artefacts selon la
plateforme cible, alors les profils peuvent améliorer sa portabilité. Les profils définis dans les
fichiers settings.xml diminuent la portabilité d'un build puisque les développeurs doivent
échanger cette information supplémentaire. Les sections qui vont suivre présentent des guides et des suggestions
pour l'utilisation de profils Maven dans votre projet.
Une des principales raisons à l'utilisation de profils Maven est de fournir la configuration
spécifique à un environnement. Dans un environnement de développement, vous voudrez produire du bytecode avec les
informations nécessaires pour le débogage et vous voudrez configurer votre système pour qu'il utilise une base de
données de développement. Dans un environnement de production, vous souhaiterez produire un JAR signé et configurer
votre système pour qu'il utilise la base de données de production. Dans ce chapitre, nous avons défini un certain
nombre d'environnements avec des identifiants comme dev et prod. Il est possible
de simplifier tout cela en définissant des profils qui seront activés par des propriétés de l'environnement et en
utilisant ces mêmes propriétés pour l'ensemble de vos projets.
Par exemple, si chaque projet a un profil development activé par une propriété appelée
environment.type ayant pour valeur dev, et si ces mêmes
projets avaient un profil production activé par la présence d'une propriété
environment.type ayant pour valeur prod, vous pourriez
alors passer la valeur appropriée en ligne de commande selon l'environnement cible. Vous pouvez
ensuite utiliser cette propriété pour activer les profils définis dans le fichier pom.xml
du projet comme nous allons le voir. Regardons comment serait défini dans un fichier pom.xml un
profil activé par le fait que la propriété environment.type ait pour valeur
dev.
Exemple 5.6. Profil d'un projet activé quand environment.type vaut 'dev'
<project>
...
<profiles>
<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>environment.type</name>
<value>dev</value>
</property>
</activation>
<properties>
<database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
<database.url>
jdbc:mysql://localhost:3306/app_dev
</database.url>
<database.user>development_user</database.user>
<database.password>development_password</database.password>
</properties>
</profile>
<profile>
<id>production</id>
<activation>
<property>
<name>environment.type</name>
<value>prod</value>
</property>
</activation>
<properties>
<database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
<database.url>jdbc:mysql://master01:3306,slave01:3306/app_prod</database.url>
<database.user>prod_user</database.user>
</properties>
</profile>
</profiles>
</project>
Ce projet définit de nouvelles propriétés comme database.url et
database.user qui pourraient être utilisées pour configurer un plugin Maven ailleurs dans le
fichier pom.xml. Il existe de nombreux plugins qui peuvent manipuler une base de données,
exécuter du SQL, ou comme le plugin Maven Hibernate3, peuvent générer un ensemble d'objets annotés utilisés par les
frameworks de persistance. Certains de ces plugins peuvent être configurés dans un fichier
pom.xml grâce à ces propriétés. Ces propriétés peuvent aussi être utilisées pour filtrer des
ressources. Dans cet exemple, comme nous avons défini un profil dans le fichier
~/.m2/settings.xml qui spécifie la valeur dev pour
environment.type, le profil de développement sera toujours actif à chaque
exécution de Maven sur cette machine. Par contre, si nous voulions modifier ce comportement par défaut, nous
pourrions préciser la valeur de cette propriété en ligne de commande. Si nous avons besoin d'activer le profil de
production, nous pourrions exécuter Maven avec la commande :
~/examples/profiles $ mvn install -Denvironment.type=prod
Comme le profil de développement est activé par défaut et puisqu'il n'y a aucun autre profil activé,
l'exécution de la commande mvn help:active-profiles indiquera que le profil
de développement est actif. Attention, l'option activeByDefault ne fonctionnera
que si aucun autre profil n'est activé. Si vous voulez être sûr que le profil de développement
sera actif pour un build donné vous pouvez passer explicitement la variable environment.type
de la manière suivante :
~/examples/profiles $ mvn install -Denvironment.type=dev
De même, si nous devons activer le profil de production, nous pouvons exécuter Maven ainsi :
~/examples/profiles $ mvn install -Denvironment.type=prod
Pour connaitre l'ensemble des profils activés pour un build donné, utilisez la commande : mvn help:active-profiles.