Préface
Points de douleur:
Dans le processus de développement de Java, nous devons souvent faire face à divers environnements, tels que l'environnement de développement, l'environnement de test et l'environnement formel, et ces environnements ont des exigences différentes pour les projets.
Avant cela, nous devons souvent modifier manuellement le fichier de configuration correspondant, puis le taper en guerre avant de pouvoir le déployer dans l'environnement correspondant.
Cependant, cela peut facilement causer des problèmes, car il est facile de provoquer des changements moins ou manquer, causant des problèmes inutiles
fantaisie:
Comme ce serait heureux s'il y avait quelque chose qui nous permettait de spécifier un paramètre lorsque nous tapons la guerre et compilons automatiquement le projet dans la guerre dans l'environnement correspondant! ! !
Le résultat: il y a vraiment une telle chose, c'est-à-dire maven-profil
Au cours du processus de développement, nous configurons souvent différents paramètres en fonction de différents environnements, tels que l'IP, le nom d'utilisateur, le mot de passe, l'URL, la clé secrète, etc. de la source de données sera différente. La méthode traditionnelle consiste à modifier les valeurs des paramètres dans le fichier de propriétés ou à commenter et à commenter dans un fichier de configuration. Ce n'est pas seulement sujet aux erreurs, mais aussi à perdre du temps inutile. Plus important encore, la publication du code dans l'environnement de test ou l'environnement de production est facile à oublier à modifier. Pour résoudre ce problème, Maven fournit une solution, qui est un profil.
L'image suivante est une manière traditionnelle et a besoin de commentaires et d'explications aller-retour
Emplacement défini par le profil
Implémentation de la méthode du filtre
Étape 1: Définissez les trois fichiers de l'application-dev.properties, application-test.properties et application-pro.properties respectivement.
application-dev.properties
Env.jdbc.Username = Devenv.jdbc.Password = 123456
application-test.properties
Env.jdbc.Username = Testenv.jdbc.Password = 888888
application-pro.properties
env.jdbc.Username = rootenv.jdbc.password = 666666
Étape 2: Définissez le fichier de propriété total application.properties et la valeur de ce fichier fait référence à la clé de l'application- <v> .properties.
application.properties
// référence keyjdbc.Username = $ {env.jdbc.Username} jdbc.password = $ {env.jdbc.password} # Configuration publique Salt = 123456789 Étape 3: Configurer le profil
<préprofiles> <pilé> <! - Environnement de développement -> <id> dev </id> <propres> <ev> dev </v> </properties> <cactivation> <! - Définir l'activation par défaut de cette configuration -> <cactiveByDefault> true </ ActiveByDefault> </ Activation> </ Profile> <pilaf> <! - Test Environment -> <id> Test </id> <preperties> <! </properties> </properties> </pila> <pilaf> <! - Release Environment -> <id> pro </id> <properties> <ev> pro </ env> </ Properties> </pila> </pila> </pila> </pila> <pila> <! - Release Environment -> <id> pro </id> <proprities> <env> pro </v> </ Profild> Profild> Profild> </profils>
Étape 4: Configurer le filtre et la ressource
$ {Env} est le nom du mvn package -P <env> , qui indique que la clé appliquée dans Application.Properties est la clé du fichier de propriété.
<fuild> <inalName> Profil-App </ FinalName> <! - Définissez l'adresse du fichier de configuration de la variable -> <filters> <filter> src / main / ressources / config / application / application - $ {Env} .properties </filter> </filters> <rontrèmes> <omerce> <adirectory> src / main / Resources </ Directory> </ Filter> True </ Filtering> </ Resources> <Glugins> <GroupId> org.apache.maven.plugins </romproudId> <Artifactid> maven-war-plugin </ artifactId> </gingin> </glugins> </uild> Package et exécuter
// Si l'environnement n'est pas spécifié, la valeur par défaut est un environnement avec ActiveByDefault = TRUE. Actuellement, il fait référence au package MVN de l'environnement de développement // L'environnement spécifié dans le package passe le paramètre -p, note que P est majuscule le package MVN -p <v>
D'après le résultat de l'exécution du test MVN Packege -P, vous pouvez voir que JDBC.USERNAME et JDBC.PASSWORD dans Classes / Application.perperties dans le répertoire cible généré sont les valeurs de Env.jdbc.Username et Env.jdbc.Password configurées dans Application-Test.Properties.
Si vous souhaitez utiliser le fichier de configuration d'attribut dans le printemps, introduisez simplement ce fichier de configuration total directement et la mission des autres fichiers de configuration de l'environnement est terminée.
<context:property-placeholder location="classpath:application.properties"/>
Principe de mise en œuvre:
Définissez différents profils pour chaque environnement différent de pom.xml. Chaque profil a un nom d'environnement. Définissez ensuite différents fichiers de configuration pour différents environnements (tels que application-<env>.properties ), puis définissez un fichier de propriété total (tel que Application.Properties). Laissez ensuite la valeur de l'application.properties référence à la clé correspondante dans application-<env>.properties et spécifiez le nom de l'environnement à emballer lors de l'emballage. De cette manière, la valeur de la clé dans Application.Properties est la valeur correspondante de l'application d'environnement- <v> .properties.
Méthode d'implémentation multi-ressources
étape
Étape 1: Créez un répertoire Env dans SRC / Main / Resource, puis créez un sous-répertoire de chaque environnement, puis créez un fichier nommé config.properties sous chaque sous-répertoire d'environnement. Chaque clé est la même et la valeur est différente.
env / dev / config.properties
JDBC.USERNAME = DEVJDBC.PASSWORD = 123456
env / test / config.properties
JDBC.UNERNAME = TESTJDBC.PASSWORD = 888888
env / pro / config.properties
jdbc.Username = rootjdbc.password = 666666
Étape 2: Créez une application indépendante de l'environnement.
application.properties
# Salt de configuration publique = 123456789
Étape 3: Configurer les profils
<préprofiles> <pilé> <! - Environnement de développement -> <id> dev </id> <propres> <ev> dev </v> </properties> <cactivation> <! - Définir l'activation par défaut de cette configuration -> <cactiveByDefault> true </ ActiveByDefault> </ Activation> </ Profile> <pilaf> <! - Test Environment -> <id> Test </id> <preperties> <! </properties> </properties> </pila> <pilaf> <! - Release Environment -> <id> pro </id> <properties> <ev> pro </ env> </properties> </id> </ Profile> <fide> <! - Release Environment -> <id> Pro </ id> </ Profiles> Profil
Étape 4: Configurer la ressource
<fuild> <inalName> Profil-App </ FinalName> <! - Définissez l'adresse du fichier de configuration de la variable -> <Sessiers> <ourcecE> <Affinet> SRC / Main / Resources </ Directory> <cluses> <clucle> Env / Dev / * </cord> <cusclude> Env / Test / * </cclude> <cusclude> Env / Pro / * </ exclure> </cclude> <filtring> true </ filter> </ Resource> <Resource> <Ar répertorié> src / main / ressources / env / $ {env} </ Directory> <clure> <clust> *. * </ include> <clure> ** / *. XML </clure> <clut> ** / *. Propriétés </clut> </clulle> </ filter> true> </ Filier> </ Resource> </ incluse> <GroupId> org.apache.maven.plugins </prômId> <ArtefactId> Maven-War-Plugin </ ArfactId> </Glugin> </Glugin> </Glugins> </Duild> Étape 5: Exécutez mvn package -P test
Si vous utilisez souvent mvn package -P <env> vous pouvez configurer un maven dans l'idée. Les étapes sont: Modifier les configurations… - + ``- Maven - Ajouter des commandes Maven pour chaque environnement. À l'avenir, double-cliquez sur toutes les configurations d'exécution, ce qui équivaut à l'exécution mvn package -P <env> .
Comparaison des deux façons
La méthode du filtre emballera tous les fichiers application-dev.properties, application-test.properties et les fichiers application-pro.properties, et cette méthode ne peut être utilisée que pour les fichiers de propriété. S'il y a d'autres fichiers (tels que .xml) et ont des configurations différentes selon différents environnements, cette méthode est difficile à gérer.
Lors de l'emballage, la méthode multi-ressources ne regroupe que les fichiers de configuration de l'environnement spécifié. Vous pouvez placer divers fichiers dans leurs dossiers environnementaux respectifs, et l'ensemble du dossier sera emballé lors de l'emballage. Recommander cette méthode
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.