Prefácio
Pontos de dor:
No processo de desenvolvimento de Java, geralmente precisamos enfrentar vários ambientes, como ambiente de desenvolvimento, ambiente de teste e ambiente formal, e esses ambientes têm requisitos diferentes para projetos.
Antes disso, geralmente precisamos modificar manualmente o arquivo de configuração correspondente e, em seguida, digitá -lo na guerra antes que possamos implantá -lo no ambiente correspondente.
No entanto, isso pode causar facilmente problemas, porque é fácil causar menos ou perder mudanças, causando problemas desnecessários
fantasia:
Quão feliz seria se houvesse algo que nos permitisse especificar um parâmetro quando digitarmos a guerra e compilarmos automaticamente o projeto na guerra no ambiente correspondente! ! !
O resultado: existe realmente uma coisa, que é o perfil do Maven
Durante o processo de desenvolvimento, geralmente configuramos parâmetros diferentes de acordo com diferentes ambientes, como IP, nome de usuário, senha, URL, chave secreta etc. da fonte de dados será diferente. O método tradicional é modificar os valores dos parâmetros no arquivo de propriedades ou comentar e comentar em um arquivo de configuração. Isso não é apenas propenso a erros, mas também desperdiça tempo desnecessário. Mais importante, a publicação do código no ambiente de teste ou ambiente de produção é fácil de esquecer de modificar. Para resolver esse problema, o Maven fornece uma solução, que é o perfil.
A imagem a seguir é uma maneira tradicional e precisa de comentários e explicações de ida e volta
Localização definida por perfil
Implementação do método de filtro
Etapa 1: Defina os três arquivos de aplicativo-dev.properties, aplicativo-test.properties e aplicativo-pro.properties, respectivamente.
Aplicativo-dev.properties
Env.jdbc.username = Devenv.jdbc.password = 123456
Aplicativo-test.properties
Env.jdbc.username = testenv.jdbc.password = 888888
Application-Pro.Properties
Env.jdbc.username = rootenv.jdbc.password = 666666
Etapa 2: Defina o Aplicativo Total de Arquivo de Propriedade.Properties, e o valor neste arquivo refere-se à chave no aplicativo- <iniv> .Properties.
Application.Properties
// referência keyjdbc.username = $ {Env.jdbc.username} jdbc.password = $ {Env.jdbc.password}# public configuration sal = 123456789 Etapa 3: Configurar perfil
<iFFILES> <FIFFILHE> <!-Ambiente de Desenvolvimento-> <id> dev </dod> <Properties> <inemp> dev </inSt> </properties> <ciltivation> <!-Defina a ativação padrão desta configuração-> <DertByDault> True </ActiveByDefault> tests> <lust> <dilerties> testowimment-test-teste <diveFault> <lodDault> </tiltByDefault> tests> </filer> <dilerts> <!-testemorness-tester.-Testes> </properties> </properties> </fileg> <filid> <!-Ambiente de liberação-> <id> pro </dod> <mperts> <inemp> pro </innest> </sperties> </filer> </filffilffild> </filffiler> </infile> <infile> <!-Release Ambients-> <d> pro </iD> <PerfS> <innt> </files>
Etapa 4: Configurar filtro e recurso
$ {Env} é o nome do mvn package -P <env> , que informa a chave aplicada no Application.properties é a chave do arquivo de propriedade.
<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> </resources> <Plugins> <voundid> org.apache.maven.plugins </frupid> <TRATIFACTID> maven-war-plugin </artifactId> </flugin> </plugins> </filt> Pacote e execute
// Se o ambiente não for especificado, o padrão será um ambiente com ActiveByDefault = true. Atualmente, refere -se ao pacote de MVN do ambiente de desenvolvimento // o ambiente especificado no pacote passa o parâmetro -p, observe que P é o pacote MVN capitalizado -P <INV>
A partir do resultado da execução do teste MVN PACKEGE -P, você pode ver que jdbc.username e jdbc.password em classes/application.perperties no diretório de destino gerado são os valores de Env.jdbc.username e invent.jdbc.password configurado no aplicativo -test.properties.
Se você deseja usar o arquivo de configuração do atributo na primavera, basta introduzir esse arquivo total de configuração diretamente e a missão de outros arquivos de configuração do ambiente terminou.
<context:property-placeholder location="classpath:application.properties"/>
Princípio de implementação:
Defina diferentes perfis para cada ambiente diferente no pom.xml. Cada perfil tem um nome de ambiente. Em seguida, defina diferentes arquivos de configuração para diferentes ambientes (como application-<env>.properties ) e, em seguida, defina um arquivo de propriedade total (como Application.Properties). Em seguida, deixe o valor do aplicativo.Properties referenciar a tecla correspondente no application-<env>.properties e especifique o nome do ambiente a ser empacotado ao embalagem. Dessa maneira, o valor da chave no Application.Properties é o valor correspondente do aplicativo de ambiente-
Método de implementação com vários recursos
etapa
Etapa 1: Crie um diretório Env no SRC/Main/Recurso, crie um subdiretório de cada ambiente e crie um arquivo chamado config.properties sob cada subdiretório de ambiente. Cada chave é a mesma e o valor é 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
Etapa 2: Crie um aplicativo independente do ambiente.Properties
Application.Properties
# Configuração pública sal = 123456789
Etapa 3: Configurar perfis
<iFFILES> <FIFFILHE> <!-Ambiente de Desenvolvimento-> <id> dev </dod> <Properties> <inemp> dev </inSt> </properties> <ciltivation> <!-Defina a ativação padrão desta configuração-> <DertByDault> True </ActiveByDefault> tests> <lust> <dilerties> testowimment-test-teste <diveFault> <lodDault> </tiltByDefault> tests> </filer> <dilerts> <!-testemorness-tester.-Testes> </Properties> </properties> </perfil> <filid> <!-Ambiente de liberação-> <di> pro </dod> <perties> <inemp> pro </ness> </sperties> </properties> </infile> </Env> <!-Ambiente de liberação-> <ID> </id> </infiles> </Env> </Env> <!-Ambiente->
Etapa 4: configurar o recurso
<FURLD> <FINALNAME> perfil-app </finalName> <!-Defina o endereço do arquivo de configuração da variável-> <weres> <urse> <Directory> src/main/recursos </diretório> <cligires> <ccludude> Env/dev/*</exclui> <cclusude> Env/Test/</exclude> <ccirtude> <ccire> Env/*</exclui> <ccire> Env/Test/*</exclude> <ccirtude> <Filtering> true </filtering> </Resource> <cource> <Directory> src/main/resources/Env/$ {Env} </diretório> <inclui> <cluir>*.*</cuncher> <///inclui </*. Xml </incluir> <cluir> **/*. <GrupidId> org.apache.maven.plugins </frupidId> <TRAFACTID> maven-war-plugin </stutifactId> </flugin> </flugin> </plugins> </fruct> Etapa 5: Execute mvn package -P test
Se você costuma usar mvn package -P <env> pode configurar algum maven na idéia. As etapas são: Editar configurações ... + ―- Maven- Adicione comandos MAVEN para cada ambiente. No futuro, clique duas vezes em qualquer uma das configurações de execução, o que equivale a executar mvn package -P <env> .
Comparação das duas maneiras
O método do filtro embalará todos os arquivos Application-dev.properties, Application-test.properties e Application-Pro.Properties, e esse método só pode ser usado para arquivos de propriedade. Se houver outros arquivos (como .xml) e tiverem configurações diferentes de acordo com diferentes ambientes, esse método é difícil de lidar.
Ao embalagem, o método multi-recursos apenas empacota os arquivos de configuração do ambiente especificado. Você pode colocar vários arquivos em suas respectivas pastas de ambiente, e a pasta inteira será empacotada ao embalagem. Recomende este método
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.