Vorwort
Schmerzpunkte:
Im Prozess der Java -Entwicklung müssen wir häufig mit verschiedenen Umgebungen wie Entwicklungsumgebung, Testumgebung und formalem Umfeld ausgesetzt sein, und diese Umgebungen haben unterschiedliche Anforderungen für Projekte.
Vorher müssen wir häufig die entsprechende Konfigurationsdatei manuell ändern und dann in Krieg eingeben, bevor wir sie in der entsprechenden Umgebung bereitstellen können.
Dies kann jedoch leicht zu Problemen führen, da es leicht ist, weniger zu verursachen oder Änderungen zu verpassen, was unnötige Probleme verursacht
Fantasie:
Wie glücklich es wäre, wenn es etwas gäbe, das es uns ermöglichte, einen Parameter anzugeben, wenn wir Krieg eingeben und das Projekt automatisch in den Krieg in der entsprechenden Umgebung zusammenstellen! ! !
Das Ergebnis: Es gibt wirklich so etwas, das ist Maven-Profile
Während des Entwicklungsprozesses konfigurieren wir häufig verschiedene Parameter gemäß verschiedenen Umgebungen, wie z. B. IP, Benutzername, Kennwort, URL, geheimer Schlüssel usw. der Datenquelle unterscheiden sich. Die herkömmliche Methode besteht darin, die Parameterwerte in der Eigenschaftendatei oder im Kommentar zu ändern und in einer Konfigurationsdatei zu kommentieren. Dies ist nicht nur anfällig für Fehler, sondern auch unnötige Zeit. Noch wichtiger ist, dass die Veröffentlichung des Codes in der Testumgebung oder der Produktionsumgebung leicht zu vergessen ist. Um dieses Problem zu lösen, bietet Maven eine Lösung, die ein Profil ist.
Das folgende Bild ist ein traditioneller Weg und braucht Hin- und Rückfahrt-Kommentare und -erklärungen
Ort, der nach Profil definiert ist
Implementierung der Filtermethode
Schritt 1: Definieren Sie die drei Dateien von Application-Dev.Properties, Anwendungstest.Properties bzw. Anwendungs-Pro.Properties.
Anwendung-dev.properties
env.jdbc.username = devenv.jdbc.password = 123456
Anwendungstest.Properties
env.jdbc.username = Testenv.jdbc.password = 888888
Anwendungs-pro.Properties
env.jdbc.username = rootenv.jdbc.password = 666666
Schritt 2: Definieren Sie die gesamte Eigenschaftsdateianwendung.
application.Properties
// Referenz keyjdbc.username = $ {env.jdbc.username} jdbc.password = $ {env.jdbc.password}# public configuration salt = 123456789 Schritt 3: Profil konfigurieren
<Profies> <Profile> <!-Entwicklungsumgebung-> <ID> dev </id> <properties> <v> av </env> </Eigenschaften> <Aktivierung> <!-Setzen Sie die Standardaktivierung dieser Konfiguration-> <ActiveByDefault> TRUE </ActiveByDefault> </action> </profile> <! </Eigenschaften> </Eigenschaften> </profile> <profile> <!-Umgebung von Release-> <id> pro </id> <properties> <v> pro </env> </properties> </profile> </profile> </profile> </profile> <! </profiles>
Schritt 4: Filter und Ressource konfigurieren
$ {env} ist der Name des mvn package -P <env> , der den in application angewendeten Schlüssel zeigt. Properties ist der Schlüssel der Eigenschaftsdatei.
<build> <finalName>profile-app</finalName> <!-- Define the address of the variable configuration file --> <filters> <filter>src/main/resources/config/application/application-${env}.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resources> </ressourcen> <plugins> <gruppe> org.apache.maven.plugins </Groupid> <artifactId> maven-kriege-Plugin </artifactid> </plugin> </plugins> </build> Paket und Ausführen
// Wenn die Umgebung nicht angegeben ist, ist die Standardeinstellung eine Umgebung mit activeByDefault = true. Derzeit bezieht es sich auf das MVN -Paket für Entwicklungsumgebung // in der im Paket angegebenen Umgebung über den -P -Parameter. Beachten Sie, dass P aktiviert ist
Aus dem Ergebnis des MVN Packege -P -Tests können Sie feststellen, dass jdbc.username und JDBC.Password in Klassen/application.Perperties im generierten Zielverzeichnis die Werte von env.jdbc.username und env.jdbc.password sind, die in Anwendungstest.Properties konfiguriert sind.
Wenn Sie die Attributkonfigurationsdatei in Spring verwenden möchten, stellen Sie einfach diese Gesamtkonfigurationsdatei direkt vor, und die Mission anderer Umgebungskonfigurationsdateien ist beendet.
<context:property-placeholder location="classpath:application.properties"/>
Implementierungsprinzip:
Definieren Sie verschiedene Profile für jede verschiedene Umgebung in pom.xml. Jedes Profil hat einen Umgebungsnamen. Definieren Sie dann verschiedene Konfigurationsdateien für verschiedene Umgebungen (z. B. application-<env>.properties . Lassen Sie dann den Wert der Anwendung.Properties auf den entsprechenden Schlüssel in application-<env>.properties verweisen und geben Sie den Namen der Umgebung an, die bei der Verpackung verpackt werden soll. Auf diese Weise ist der Wert des Schlüssels in Anwendung.
Mehrressourcen-Implementierungsmethode
Schritt
Schritt 1: Erstellen Sie ein Env -Verzeichnis in SRC/Main/Ressource, erstellen Sie dann ein Unterverzeichnis jeder Umgebung und erstellen Sie dann eine Datei mit dem Namen config.Properties unter jedem Umgebungs -Unterverzeichnis. Jeder Schlüssel ist der gleiche und der Wert ist anders.
env/dev/config.properties
jdbc.username = devjdbc.password = 123456
env/test/config.Properties
jdbc.username = testjdbc.password = 888888
env/pro/config.Properties
jdbc.username = rootjdbc.password = 666666
Schritt 2: Erstellen Sie eine umweltunabhängige Anwendung.Properties
application.Properties
# Public Configuration Salt = 123456789
Schritt 3: Profile konfigurieren
<Profies> <Profile> <!-Entwicklungsumgebung-> <ID> dev </id> <properties> <v> av </env> </Eigenschaften> <Aktivierung> <!-Setzen Sie die Standardaktivierung dieser Konfiguration-> <ActiveByDefault> TRUE </ActiveByDefault> </action> </profile> <! </properties> </properties> </profile> <profile> <!-- Release environment --> <id>pro</id> <properties> <env>pro</env> </properties> </properties> </profile> <profile> <!-- Release environment --> <id>pro</id> <properties> <env>pro</env> </properties> </profile></profiles>
Schritt 4: Ressource konfigurieren
<build> <finalName>profile-app</finalName> <!-- Define the address of the variable configuration file --> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>env/dev/*</exclude> <exclude>env/test/*</exclude> <exclude>env/pro/*</exclude> </excludes> <Filtering> true </filtering> </ressourcen> <ressourcen> <Direcidory> src/main/ressourcen/env/$ {env} </verzeichnis> <clyse> <clades>*.*</include> **/*. xml </*. <gruppe> org.apache.maven.plugins </Groupid> <artifactId> maven-war-plugin </artifactid> </plugin> </plugin> </plugins> </build> Schritt 5: mvn package -P test ausführen
Wenn Sie häufig mvn package -P <env> können Sie einige Maven in der Idee konfigurieren. Die Schritte sind: Konfigurationen bearbeiten…- + —- maven —- add Maven-Befehle für jede Umgebung. Doppelklicken Sie in Zukunft auf eine der Auslaufkonfigurationen, was dem Ausführen mvn package -P <env> entspricht.
Vergleich der beiden Wege
Die Filtermethode packt alle Anwendungs-Dev.Properties, Application-Test.Properties und Application-Pro.Properties-Dateien, und diese Methode kann nur für Eigenschaftsdateien verwendet werden. Wenn es andere Dateien gibt (z. B. .xml) und unterschiedliche Konfigurationen gemäß verschiedenen Umgebungen aufweisen, ist diese Methode schwer zu handhaben.
Bei der Verpackung packt die Mehrressourcenmethode nur die Konfigurationsdateien der angegebenen Umgebung. Sie können verschiedene Dateien in ihre jeweiligen Umgebungsordner einfügen, und der gesamte Ordner wird in der Verpackung verpackt. Empfehlen Sie diese Methode
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.