English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Les fichiers de configuration de construction sont une série de valeurs de configurations qui peuvent être utilisées pour définir ou remplacer les valeurs par défaut de la construction Maven.
Avec les fichiers de configuration de construction, vous pouvez personnaliser la manière de construction pour différents environnements, par exemple pour l'environnement de production et l'environnement de développement.
Les fichiers de configuration peuvent être spécifiés dans le fichier pom.xml à l'aide des éléments activeProfiles ou profiles, et peuvent être déclenchés de différentes manières. Les fichiers de configuration modifie le POM pendant la construction et sont utilisés pour définir des environnements cibles différents pour les paramètres (par exemple, l'adresse du serveur de base de données dans les environnements de développement, de test et de production).
Grosso modo, il y a trois types de fichiers de configuration de construction:
Type | Où définir |
---|---|
Niveau projet (Par projet) | Défini dans le fichier POM du projet pom.xml |
Niveau utilisateur (Par utilisateur) | Défini dans le fichier xml de configuration de Maven (%USER_HOME%/.m2/settings.xml) |
Global | Défini dans le fichier xml de configuration global de Maven (%M2_HOME%/conf/settings.xml) |
Le fichier de configuration de construction de Maven peut être activé de plusieurs manières.
Activer explicitement via la console de commande.
Réglé par Maven.
Basé sur les variables d'environnement (utilisateur ou système).
Configuration du système d'exploitation (par exemple, la série Windows).
l'existence ou l'absence de fichiers.
On suppose que la structure du projet est la suivante :
Parmi eux, dans src/main/Il y a trois fichiers de test dans le dossier resources :
Nom du fichier | Description |
---|---|
env.properties | Configuration par défaut utilisée si le fichier de configuration n'est pas spécifié. |
env.test.properties | Configuration de test utilisée lorsque le fichier de configuration de test est utilisé. |
env.prod.properties | Configuration de production utilisée lorsque le fichier de configuration de production est utilisé. |
Attention :Ces trois fichiers de configuration ne représentent pas la fonction des fichiers de configuration de construction, mais sont utilisés à des fins de ce test ; par exemple, si je spécifie que le fichier de configuration de construction est prod, le projet utilise le fichier env.prod.properties.
Attention :L'exemple suivant utilise toujours le plugin AntRun, car cet outil peut lier la phase de cycle de vie Maven et, sans écrire de code, afficher des informations, copier des fichiers via des balises Ant, etc. Le reste n'a rien à voir avec le fichier de configuration de cette construction.
Le profil nous permet de définir une série d'informations de configuration, puis de spécifier les conditions d'activation. De cette manière, nous pouvons définir plusieurs profils, puis chaque profil correspond à des conditions d'activation et des informations de configuration différentes, permettant ainsi d'utiliser différentes informations de configuration dans différents environnements.
Dans les exemples suivants, nous allons utiliser maven-antrun-L'objectif plugin:run est ajouté à la phase de test. De cette manière, nous pouvons afficher des informations de texte dans différents profils. Nous allons utiliser pom.xml pour définir différents profils et utiliser des commandes Maven dans la console de commande pour activer les profils.
Le fichier pom.xml suivant :
<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>com.jsoft.test</groupId> <artifactId>testproject</artifactId> <packaging>jar</packaging> <version>0.1-SNAPSHOT</version> <name>testproject</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>test</<id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</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" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>normal</<id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.properties</echo> <copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>prod</<id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.prod.properties</echo> <copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>
Attention :fichier de configuration de constructionest utilisé <profiles> nœuds.
Remarque :ci-dessus, trois nouveaux <profiles>dans lesquels <id> différencie différentes <profiles> Exécuter différentes tâches AntRun ; et les tâches d'AntRun peuvent être comprises ainsi, AntRun écoute la phase de cycle de vie Maven de test, lorsque Maven exécute test, il envoie également des tâches d'AntRun, les tâches à l'intérieur sont pour afficher du texte et copier des fichiers à des emplacements spécifiés ; et quant à la tâche d'AntRun à exécuter, à ce momentfichier de configuration de constructionjoue un rôle de transmission spécifique, par exemple, en entrant des paramètres spécifiés via la ligne de commande <id>。
Exécutez la commande :
mvn test -Ptest
Avis : le premier test est la phase de cycle de vie Maven, le 2 un test pourfichier de configuration de constructionLe paramètre <id> spécifié, ce paramètre est -P pour la transmission, bien sûr, il peut s'agir de prod ou de normal, etc., que vous définissez vous-même<id>。
Les résultats du processus sont les suivants :
On peut voir que les tâches AntRun ont été déclenchées avec succès. Et cela correspond àfichier de configuration de constructionsous le noeud <id> test de la tâche.
Ensuite, testez les deux autres commandes, les résultats sont les suivants:
ouvrir %USER_HOME%/.m2 sous le répertoire settings.xml le fichier, dans lequel %USER_HOME% représente le répertoire principal de l'utilisateur. Si le fichier setting.xml n'existe pas, copiez directement %M2_HOME%/conf/settings.xml jusqu'à .m2 dans lequel %M2_HOME% représente le répertoire d'installation Maven.
Configurez le fichier setting.xml, ajoutez l'attribut <activeProfiles>:
<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"> ... <activeProfiles> <activeProfile>test</activeProfile> </activeProfiles> </settings>
Exécutez la commande :
mvn test
Avis 1:Il n'est pas nécessaire d'utiliser -Ptest pour entrer les paramètres, le fichier setting.xml mentionné précédemment a déjà spécifié le paramètre test pour remplacer.
Avis 2:Il peut également être utilisé dans %M2_HOME%/conf/settings.xml le fichier de configuration a le même effet.
Résultat de l'exécution :
Supprimez toutes les valeurs de setting.xml testées à l'étape précédente.
Puis, dans le noeud <profile> avec <id> test de pom.xml, ajoutez le noeud <activation>:
<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>com.jsoft.test</groupId> <artifactId>testproject</artifactId> <packaging>jar</packaging> <version>0.1-SNAPSHOT</version> <name>testproject</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>test</<id> <activation> <property> <name>env</name> <value>test</value> </property> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</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" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>normal</<id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.properties</echo> <copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>prod</<id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.prod.properties</echo> <copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>
Exécutez la commande :
mvn test -Denv=test
Avis 1:ci-dessus utilise -D transmettez l'environnement variable, où evn correspond à la valeur <name> récemment définie, et test correspond à <value>.
Avis 2:dans Windows 10 J'ai testé les variables d'environnement du système, mais elles ne fonctionnent pas, donc, je ne peux que -D Transfert.
Résultat de l'exécution :
L'élément activation contient les informations suivantes sur le système d'exploitation. Lorsque le système d'exploitation est Windows XP, le Profile test sera déclenché.
<profile> <id>test</<id> <activation> <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> </activation> </profile>
Maintenant, ouvrez la console de commande, accédez au répertoire contenant pom.xml et exécutez la commande mvn suivante. Ne pas utiliser -L'option P spécifie le nom du Profile. Maven affichera les résultats du Profile test activé.
mvn test
Maintenant, utilisez l'élément activation pour inclure les informations suivantes sur le système d'exploitation. Lorsque le target/generated-sources/axistools/wsdl2java/com/companyname/Si le groupe est manquant, le Profile test sera déclenché.
<profile> <id>test</<id> <activation> <file> <missing>target/generated-sources/axistools/wsdl2java/ com/companyname/group</missing> </file> </activation> </profile>
Maintenant, ouvrez la console de commande, accédez au répertoire contenant pom.xml et exécutez la commande mvn suivante. Ne pas utiliser -L'option P spécifie le nom du Profile. Maven affichera les résultats du Profile test activé.
mvn test
Référence : https://www.cnblogs.com/EasonJim/p/6828743.html