English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Die Build-Konfigurationsdatei ist eine Reihe von Werten von Konfigurationsoptionen, die verwendet werden können, um Standardwerte von Maven zu setzen oder zu überschreiben.
Mit der Build-Konfigurationsdatei können Sie für verschiedene Umgebungen, wie z.B. Produktionsumgebung (Production) und Entwicklungs-Development-Umgebung, den Build-Modus anpassen.
Die Konfigurationsdatei wird in der pom.xml-Datei mit den Elementen activeProfiles oder profiles angegeben und kann auf verschiedene Weise ausgelöst werden. Die Konfigurationsdatei ändert den POM bei der Build und wird verwendet, um verschiedene Zielumgebungen für Parameter zu setzen (z.B., Entwicklungs-Development), Test-Testing- und Produktionsumgebungen (Production) für die Adresse des Datenbankserver).
Die Build-Konfigurationsdatei gibt es in etwa drei Typen:
Typ | Wo wird definiert |
---|---|
Projektklasse (Pro Projekt) | Definiert im Projektpom-Datei pom.xml |
Benutzerstufe (Pro Benutzer) | Definiert im Einstellungsxml-Datei von Maven (%USER_HOME%)/.m2/settings.xml) |
Global (Global) | Definiert im globalen Einstellungsxml-Datei von Maven (%M2_HOME%/conf/settings.xml) |
Die Build-Konfigurationsdatei von Maven kann auf verschiedene Weise aktiviert werden.
Durch Eingabe in der Befehlszeile konsequent aktiviert.
Durch Maven-Einstellungen.
Basiert auf Umgebungsvariablen (Benutzer- oder Systemvariablen).
Betriebssystem-Einstellungen (z.B. Windows-Serie).
Existenz oder Fehlen von Dateien.
angenommen, das Projektstruktur wie folgt ist:
von denen/main/Im Verzeichnis resources gibt es drei Dateien für den Test:
Dateiname | Beschreibung |
---|---|
env.properties | Standardkonfiguration, die verwendet wird, wenn keine Konfigurationsdatei angegeben ist. |
env.test.properties | Testkonfiguration, wenn die Testkonfigurationsdatei verwendet wird. |
env.prod.properties | Produktionskonfiguration, wenn die Produktionskonfigurationsdatei verwendet wird. |
Beachtung:Diese drei Konfigurationsdateien stellen nicht die Funktion der Build-Konfigurationsdatei dar, sondern dienen dem Zweck dieses Tests; zum Beispiel, wenn ich die Build-Konfigurationsdatei auf prod setze, verwendet das Projekt die Datei env.prod.properties.
Beachtung:Das folgende Beispiel verwendet ebenfalls den AntRun-Plugin, da dieses Plugin Maven-Lifecycle-Stufen binden kann und ohne Code durch Ant-Tags Informationen ausgeben und Dateien kopieren kann, das ist alles. Der Rest hat nichts mit der aktuellen Build-Konfigurationsdatei zu tun.
Profile ermöglichen es uns, eine Reihe von Konfigurationsinformationen zu definieren und deren Aktivierungsbedingungen zu spezifizieren. Auf diese Weise können wir mehrere Profile definieren und jedem Profil bestimmte Aktivierungsbedingungen und Konfigurationsinformationen zuweisen, um unterschiedliche Konfigurationsinformationen für verschiedene Umgebungen zu erreichen.
Im folgenden Beispiel verwenden wir Maven-antrun-Das Ziel plugin:run wird dem Teststadium hinzugefügt. Auf diese Weise können wir Textinformationen in verschiedenen Profilen ausgeben. Wir werden pom.xml verwenden, um verschiedene Profile zu definieren und die Profile mit Maven-Befehlen im Befehlszeilen-Protokoll zu aktivieren.
Die Datei pom.xml ist wie folgt:
<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>
Beachtung:Build-Konfigurationsdateiverwendet <profiles> Knoten erstellt.
Hinweis:hier wurden drei neue <profiles>unterschieden, darunter <id> unterschiedliche <profiles> unterschiedliche AntRun-Aufgaben auszuführen; und die Aufgaben von AntRun können so verstanden werden, dass AntRun die Maven-Lifecycle-Stufe von test überwacht, wenn Maven test ausführt, führt er die Aufgaben von AntRun aus, die Texte ausgeben und Dateien an bestimmte Positionen kopieren; und welche AntRun-Aufgabe ausgeführt werden soll, dies istBuild-Konfigurationsdateihat die Funktion, bestimmte Daten zu übertragen, zum Beispiel, durch Befehlszeilenparameter bestimmte Daten einzugeben <id>。
Führe den Befehl aus:
mvn test -Ptest
Hinweis: Der erste test ist die Maven-Lifecycle-Stufe, die Nummer 2 ein test istBuild-Konfigurationsdateiangegebene <id> - Parameter, dieser Parameter wird durch -P wird verwendet, natürlich, es kann prod oder normal sein, die von Ihnen definiert wurden<id>。
运行的结果如下:
Es kann看出成功触发了AntRun的任务。并且是对应Build-KonfigurationsdateiVerzeichnis unter <id> ist die Aufgabe für test.
Testen Sie die nächsten beiden Befehle, das Ergebnis ist wie folgt:
öffnet %USER_HOME%/.m2 Verzeichnis unter settings.xml Datei, in der %USER_HOME% repräsentiert das Hauptverzeichnis des Benutzers. Wenn die Datei setting.xml nicht existiert, kopieren Sie sie direkt %M2_HOME%/conf/settings.xml bis .m2 Verzeichnis, in dem %M2_HOME% repräsentiert den Installationsverzeichnis von Maven.
Konfigurieren Sie die Datei setting.xml und fügen Sie das Attribut <activeProfiles> hinzu:
<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>
Führe den Befehl aus:
mvn test
Hinweis 1:Es ist in diesem Moment nicht erforderlich, -Ptest verwendet werden, um Parameter einzugeben, die im obigen <activeprofile> von setting.xml bereits durch den Parameter test ersetzt wurden.
Hinweis 2:Es kann auch in %M2_HOME%/conf/settings.xml Datei konfiguriert, der Effekt ist gleich.
Ergebnis der Ausführung:
Entfernen Sie alle Werte aus dem in Schritt 1 getesteten setting.xml.
Dann fügen Sie im <id> für test im <profile> Abschnitt von pom.xml den <activation> Abschnitt hinzu:
<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>
Führe den Befehl aus:
mvn test -Denv=test
Hinweis 1:Oben verwendet -D übergibt Umgebungsvariablen, wobei evn dem soeben gesetzten <name>-Wert entspricht und test dem <value> entspricht.
Hinweis 2:in Windows 10 Der Test der Umgebungsvariablen des Systems wurde durchgeführt, aber es funktioniert nicht, daher kann es nur durch -D Übermittlung.
Ergebnis der Ausführung:
Das activation-Element enthält die folgenden Betriebssysteminformationen. Wenn das System Windows XP ist, wird das Test-Profil ausgelöst.
<profile> <id>test</id> <activation> <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> </activation> </profile>
Öffnen Sie nun die Befehlszeile, wechseln Sie zum Verzeichnis, in dem pom.xml liegt, und führen Sie den folgenden mvn-Befehl aus. Verwenden Sie nicht -Die Option P gibt den Namen des Profiles an. Maven zeigt die Ergebnisse des aktivierten Test-Profils an.
mvn test
Verwenden Sie nun das activation-Element, um die folgenden Betriebssysteminformationen zu enthalten. Wenn target/generated-sources/axistools/wsdl2java/com/companyname/Wird das Group fehlt, wird das Test-Profil ausgelöst.
<profile> <id>test</id> <activation> <file> <missing>target/generated-sources/axistools/wsdl2java/ com/companyname/group</missing> </file> </activation> </profile>
Öffnen Sie nun die Befehlszeile, wechseln Sie zum Verzeichnis, in dem pom.xml liegt, und führen Sie den folgenden mvn-Befehl aus. Verwenden Sie nicht -Die Option P gibt den Namen des Profiles an. Maven zeigt die Ergebnisse des aktivierten Test-Profils an.
mvn test
Referenz: https://www.cnblogs.com/EasonJim/p/6828743.html