| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
Un profil dans Maven est un ensemble alternatif de valeurs qui définissent ou surchargent les valeurs par défaut.
En utilisant un profil, vous pouvez personnaliser un build pour différents environnements. Les profils sont
configurés dans le fichier pom.xml et possèdent un identifiant. Vous pouvez ensuite exécuter
Maven en précisant sur la ligne de commande le profil à utiliser. Le pom.xml suivant utilise
un profil production pour écraser les paramètres par défaut du plugin Compiler.
Exemple 5.1. Surcharge des paramètres de compilation en production par un profil Maven
<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>production</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <debug>false</debug> <optimize>true</optimize> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project>
Dans cet exemple, nous avons ajouté un profil nommé production pour surcharger la
configuration par défaut du plugin Maven Compiler. Examinons la syntaxe de ce profil en détail.
|
L'élément |
|
|
Chaque profil doit avoir un élément |
|
|
Un élément |
|
|
Nous surchargeons la configuration du plugin Maven Compiler. Nous nous assurons que le bytecode produit par le profil de production ne contient pas les informations de débogage et qu'il a été optimisé par le compilateur. |
Pour exécuter la commande mvn install avec le profil de production, vous
devez passer l'argument -Pproduction en ligne de commande. Pour vérifier que le profil de
production surcharge la configuration par défaut du plugin Compiler, exécutez Maven avec les
options de debug (-X) activées :
~/examples/profile $ mvn clean install -Pproduction -X ... (omitting debugging output) ... [DEBUG] Configuring mojo 'o.a.m.plugins:maven-compiler-plugin:2.0.2:testCompile' [DEBUG] (f) basedir = ~\examples\profile [DEBUG] (f) buildDirectory = ~\examples\profile\target ... [DEBUG] (f) compilerId = javac [DEBUG] (f) debug = false [DEBUG] (f) failOnError = true [DEBUG] (f) fork = false [DEBUG] (f) optimize = true [DEBUG] (f) outputDirectory = \ ~\svnw\sonatype\examples\profile\target\test-classes [DEBUG] (f) outputFileName = simple-1.0-SNAPSHOT [DEBUG] (f) showDeprecation = false [DEBUG] (f) showWarnings = false [DEBUG] (f) staleMillis = 0 [DEBUG] (f) verbose = false [DEBUG] -- end configuration -- ... (omitting debugging output) ...
Cet extrait de la sortie en mode debug de Maven nous montre la configuration du plugin Compiler avec le profil
de production. Comme nous pouvons le voir, la variable debug est à false et la variable
optimize est à true.
L'exemple précédent vous a montré comment surcharger la configuration par défaut d'un plugin Maven seul,
cependant vous ignorez toujours ce qu'il est possible de faire avec un profil Maven. Pour faire court, un profil
Maven peut surcharger presque tout ce que vous pouvez trouver dans un fichier pom.xml. Le
POM Maven possède une balise appelée profiles qui contient les différentes
configurations d'un projet, et dans cette balise se trouve une balise profile qui définit chacun d'entre eux.
Chaque profil doit avoir une balise id, cela mit à part, il peut contenir presque tous les
éléments que l'on peut trouver sous la balise project. Le document XML qui
suit nous montre toutes les balises qu'un profil peut surcharger.
Exemple 5.2. Balises autorisées dans un profil
<project>
<profiles>
<profile>
<build>
<defaultGoal>...</defaultGoal>
<finalName>...</finalName>
<resources>...</resources>
<testResources>...</testResources>
<plugins>...</plugins>
</build>
<reporting>...</reporting>
<modules>...</modules>
<dependencies>...</dependencies>
<dependencyManagement>...</dependencyManagement>
<distributionManagement>...</distributionManagement>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<properties>...</properties>
</profile>
</profiles>
</project>
Un profil peut donc redéfinir tous ces éléments. Il peut redéfinir le nom de l'artefact final, les
dépendances et le build d'un projet en surchargeant la configuration des plugins. Un profil peut aussi
redéfinir les paramètres de distribution. Par exemple, si pour une étape de validation vous
devez publier vos artefacts sur un serveur de pré-production, vous allez créer un profil de validation qui va
surcharger la balise distributionManagement.