Maven - Créer des profils
Qu'est-ce que Build Profile?
Un profil de construction est un ensemble de valeurs de configuration, qui peuvent être utilisées pour définir ou remplacer les valeurs par défaut de la construction Maven. À l'aide d'un profil de build, vous pouvez personnaliser la build pour différents environnements tels que les environnements Production v / s Development.
Les profils sont spécifiés dans le fichier pom.xml à l'aide de ses éléments activeProfiles / profiles et sont déclenchés de diverses manières. Les profils modifient le POM au moment de la construction et sont utilisés pour donner des paramètres à différents environnements cibles (par exemple, le chemin du serveur de base de données dans les environnements de développement, de test et de production).
Types de profil de construction
Les profils de construction sont principalement de trois types.
Type | Où il est défini |
---|---|
Par projet | Défini dans le fichier POM du projet, pom.xml |
Par utilisateur | Défini dans le fichier xml des paramètres Maven (% USER_HOME% /. M2 / settings.xml) |
Global | Défini dans le fichier xml des paramètres globaux Maven (% M2_HOME% / conf / settings.xml) |
Activation du profil
Un profil de build Maven peut être activé de différentes manières.
- Utilisation explicite de l'entrée de la console de commande.
- Grâce aux paramètres maven.
- Basé sur des variables d'environnement (variables utilisateur / système).
- Paramètres du système d'exploitation (par exemple, la famille Windows).
- Fichiers présents / manquants.
Exemples d'activation de profil
Supposons la structure de répertoires suivante de votre projet -
Maintenant, sous src/main/resources, il existe trois fichiers spécifiques à l'environnement -
N ° Sr. | Nom et description du fichier |
---|---|
1 | env.properties configuration par défaut utilisée si aucun profil n'est mentionné. |
2 | env.test.properties configuration de test lorsque le profil de test est utilisé. |
3 | env.prod.properties configuration de production lorsque le profil de production est utilisé. |
Activation de profil explicite
Dans l'exemple suivant, nous allons attacher maven-antrun-plugin: run goal pour tester la phase. Cela nous permettra de faire écho aux messages texte pour différents profils. Nous utiliserons pom.xml pour définir différents profils et activerons le profil sur la console de commande à l'aide de la commande maven.
Supposons que nous ayons créé le pom.xml suivant dans le dossier C: \ MVN \ project.
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<profiles>
<profile>
<id>test</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Using env.test.properties</echo>
<copy file="src/main/resources/env.test.properties"
tofile="${project.build.outputDirectory}
/env.properties"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Ouvrez maintenant la console de commande, accédez au dossier contenant pom.xml et exécutez ce qui suit mvncommander. Passez le nom du profil comme argument à l'aide de l'option -P.
C:\MVN\project>mvn test -Ptest
Maven commencera le traitement et affichera le résultat du profil de build de test.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [test]
[INFO] ------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] Copying 3 resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\MVN\project\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\MVN\project\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
There are no tests to run.
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
[echo] Using env.test.properties
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sun Jul 08 14:55:41 IST 2012
[INFO] Final Memory: 8M/64M
[INFO] ------------------------------------------------------------------
Maintenant, à titre d'exercice, vous pouvez effectuer les étapes suivantes -
Ajoutez un autre élément de profil à l'élément de profil de pom.xml (copiez l'élément de profil existant et collez-le là où les éléments de profil se terminent).
Mettez à jour l'ID de cet élément de profil de test à normal.
Mettez à jour la section des tâches pour faire écho à env.properties et copiez env.properties dans le répertoire cible.
Répétez à nouveau les trois étapes ci-dessus, mettez à jour l'id vers la section prod et la tâche pour env.prod.properties.
C'est tout. Vous avez maintenant trois profils de construction prêts (normal / test / prod).
Ouvrez maintenant la console de commande, accédez au dossier contenant pom.xml et exécutez ce qui suit mvncommandes. Passez les noms de profil en argument à l'aide de l'option -P.
C:\MVN\project>mvn test -Pnormal
C:\MVN\project>mvn test -Pprod
Vérifiez la sortie de la construction pour voir la différence.
Activation du profil via les paramètres Maven
Ouvrez Maven settings.xml fichier disponible dans le répertoire% USER_HOME% /. m2 où %USER_HOME%représente le répertoire de base de l'utilisateur. Si le fichier settings.xml n'est pas là, créez-en un nouveau.
Ajoutez un profil de test en tant que profil actif à l'aide du nœud Profils actif, comme illustré ci-dessous dans l'exemple.
<settings 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/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>maven.dev.snaponglobal.com</id>
<name>Internal Artifactory Maven repository</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<activeProfiles>
<activeProfile>test</activeProfile>
</activeProfiles>
</settings>
Ouvrez maintenant la console de commande, accédez au dossier contenant pom.xml et exécutez ce qui suit mvncommander. Ne transmettez pas le nom du profil à l'aide de l'option -P. Maven affichera le résultat du profil de test étant un profil actif.
C:\MVN\project>mvn test
Activation de profil via des variables d'environnement
Supprimez maintenant le profil actif de maven settings.xml et mettez à jour le profil de test mentionné dans pom.xml. Ajoutez un élément d'activation à l'élément de profil comme indiqué ci-dessous.
Le profil de test se déclenchera lorsque la propriété système "env" est spécifiée avec la valeur "test". Créez une variable d'environnement "env" et définissez sa valeur sur "test".
<profile>
<id>test</id>
<activation>
<property>
<name>env</name>
<value>test</value>
</property>
</activation>
</profile>
Ouvrons la console de commande, allons dans le dossier contenant pom.xml et exécutons ce qui suit mvn commander.
C:\MVN\project>mvn test
Activation du profil via le système d'exploitation
Élément d'activation pour inclure les détails du système d'exploitation comme indiqué ci-dessous. Ce profil de test se déclenchera lorsque le système est Windows XP.
<profile>
<id>test</id>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
</profile>
Ouvrez maintenant la console de commande, accédez au dossier contenant pom.xml et exécutez ce qui suit mvncommandes. Ne transmettez pas le nom du profil à l'aide de l'option -P. Maven affichera le résultat du profil de test étant un profil actif.
C:\MVN\project>mvn test
Activation du profil via un fichier présent / manquant
Maintenant, élément d'activation pour inclure les détails du système d'exploitation comme indiqué ci-dessous. Le profil de test se déclenchera lorsquetarget/generated-sources/axistools/wsdl2java/com/companyname/group est manquant.
<profile>
<id>test</id>
<activation>
<file>
<missing>target/generated-sources/axistools/wsdl2java/
com/companyname/group</missing>
</file>
</activation>
</profile>
Ouvrez maintenant la console de commande, accédez au dossier contenant pom.xml et exécutez ce qui suit mvncommandes. Ne transmettez pas le nom du profil à l'aide de l'option -P. Maven affichera le résultat du profil de test étant un profil actif.
C:\MVN\project>mvn test