Prefacio
Puntos de dolor:
En el proceso de desarrollo de Java, a menudo tenemos que enfrentar varios entornos, como el entorno de desarrollo, el entorno de prueba y el entorno formal, y estos entornos tienen diferentes requisitos para los proyectos.
Antes de esto, a menudo necesitamos modificar manualmente el archivo de configuración correspondiente y luego escribirlo en la guerra antes de poder implementarlo en el entorno correspondiente.
Sin embargo, esto puede causar problemas fácilmente, porque es fácil causar menos cambios o perder cambios, causando problemas innecesarios
fantasía:
¡Qué feliz sería si hubiera algo que nos permitiera especificar un parámetro cuando escribimos la guerra y compilamos automáticamente el proyecto en la guerra en el entorno correspondiente! ! !
El resultado: realmente existe tal cosa, que es el perfil maven
Durante el proceso de desarrollo, a menudo configuramos diferentes parámetros de acuerdo con diferentes entornos, como IP, nombre de usuario, contraseña, URL, clave secreta, etc. de la fuente de datos será diferente. El método tradicional es modificar los valores de los parámetros en el archivo de propiedades o comentarios y comentarios en un archivo de configuración. Esto no solo es propenso a los errores, sino que también pierde el tiempo innecesario. Más importante aún, publicar el código para el entorno de prueba o el entorno de producción es fácil de olvidar modificar. Para resolver este problema, Maven proporciona una solución, que es el perfil.
La siguiente imagen es una forma tradicional y necesita comentarios y explicaciones de ida y vuelta.
Ubicación definida por perfil
Implementación del método de filtro
Paso 1: Defina los tres archivos de Application-Dev.Properties, Application-Test.Properties y Application-Pro.Properties, respectivamente.
Application-Dev.Properties
env.jdbc.username = Devenv.jdbc.password = 123456
Test de aplicación. Properties
env.jdbc.username = testenv.jdbc.password = 888888
aplicación-pro.properties
env.jdbc.username = rootenv.jdbc.password = 6666666
Paso 2: Defina la aplicación de archivo de propiedad total.
Aplicación. Properties
// referencia keyJdbc.username = $ {env.jdbc.username} jdbc.password = $ {env.jdbc.password}# pública configuración salt = 123456789 Paso 3: Configurar perfil
<playpes> <pecter> <!-Desarrollo entorno-> <id> dev </id> <propiedades> <env> dev </env> </propiedades> <activación> <!-Establezca la activación predeterminada de esta configuración-> <ActiveByDefault> True </ActiveByDefault> </propil> </perfil de perfil> <!-Test Whuse-> <d> testities </propiedades> </perrate> <perry> <!-Release Environment-> <id> pro </id> <propiedades> <env> pro </env> </propiedades> </perrate> </perrate> </perrate> </perrate> <perrate> <!-Release ambiental-> <d> pro </id> <perties> <env> pro </env> </propilies> </file> </perfil de perfil> </perfilado>
Paso 4: Configurar filtro y recurso
$ {env} es el nombre del mvn package -P <env> , que indica la clave aplicada en Application.Properties es la clave del archivo de propiedades.
<Scople> <finalName> perfil-app </finalName> <!-Defina la dirección del archivo de configuración variable-> <filtros> <filter> src/main/recursos/config/aplicación/aplicación/aplicación-$ {env} .properties </filtre> </filters> <contrates> <contratesce> <src/src/main/recursos </secectory> <silter> verdadero </filtrando </filtrando </filtros> <glugins> <MoupRoMID> org.apache.maven.plugins </groupid> <artifactid> maven-war-plugin </arfactid> </glugin> </glugins> </bield> Paquete y ejecutar
// Si no se especifica el entorno, el valor predeterminado es un entorno con ActiveByDefault = True. Actualmente, se refiere al paquete MVN de entorno de desarrollo // el entorno especificado en el paquete pasa el parámetro -p, tenga en cuenta que P se capitaliza el paquete MVN -p <env>
A partir del resultado de la ejecución de la prueba MVN PacKege -P, puede ver que JDBC.Username y JDBC.Password en clases/Application.perperties en el directorio de destino generado son los valores de env.jdbc.username y env.jdbc.password configurados en apropiaciones.
Si desea utilizar el archivo de configuración de atributos en Spring, simplemente presente este archivo de configuración total directamente, y la misión de otros archivos de configuración de entorno ha finalizado.
<context:property-placeholder location="classpath:application.properties"/>
Principio de implementación:
Defina diferentes perfiles para cada entorno diferente en pom.xml. Cada perfil tiene un nombre de entorno. Luego defina diferentes archivos de configuración para diferentes entornos (como application-<env>.properties ), y luego defina un archivo de propiedad total (como Application.Properties). Luego, deje que el valor de la aplicación. Properties haga referencia a la clave correspondiente en application-<env>.properties , y especifique el nombre del entorno que se empaqueta al empaquetar. De esta manera, el valor de la clave en la aplicación.
Método de implementación de varios recursos
paso
Paso 1: Cree un directorio ENV en SRC/Main/Resource, luego cree un subdirectorio de cada entorno y luego cree un archivo llamado Config.Properties en cada subdirectorio de entorno. Cada clave es la misma y el valor es diferente.
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
Paso 2: crear una aplicación independiente del entorno.
Aplicación. Properties
# Public Configuration Salt = 123456789
Paso 3: Configurar perfiles
<playpes> <pecter> <!-Desarrollo entorno-> <id> dev </id> <propiedades> <env> dev </env> </propiedades> <activación> <!-Establezca la activación predeterminada de esta configuración-> <ActiveByDefault> True </ActiveByDefault> </propil> </perfil de perfil> <!-Test Whuse-> <d> testities </propiedades> </perrate> <perry> <!-Release Environment-> <id> pro </id> <properties> <env> pro </env> </propiedades> </propiedades> </perrate> <perry> <!-Release Environment-> <id> pro </id> <propiedades> <env> pro </env> </propiedades> </free> </plosiles>
Paso 4: Configurar el recurso
<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> </resource> <resource> <directory>src/main/resources/env/${env}</directory> <includes> <include>*.*</include> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources> <plugins> <MoupRid> org.apache.maven.plugins </groupid> <artifactid> maven-war-plugin </arfactid> </glugin> </glugin> </glugins> </build>> Paso 5: Ejecutar mvn package -P test
Si a menudo usa mvn package -P <env> puede configurar algo de Maven en Idea. Los pasos son: Editar configuraciones ...- + ―- Maven ―- Agregar comandos Maven para cada entorno. En el futuro, haga doble clic en cualquiera de las configuraciones de ejecución, que es equivalente a ejecutar mvn package -P <env> .
Comparación de las dos formas
El método de filtro empacará todos los archivos de aplicación-dev.properties, Application-Test.Properties y Application-Pro.Properties, y este método solo se puede usar para los archivos de propiedades. Si hay otros archivos (como .xml) y tienen diferentes configuraciones de acuerdo con diferentes entornos, este método es difícil de manejar.
Al empacar, el método de recursos múltiples solo empaqueta los archivos de configuración del entorno especificado. Puede colocar varios archivos en sus respectivas carpetas de entorno, y la carpeta completa se empaquetará cuando se empaqueta. Recomendar este método
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.