Eu tenho 5 ambientes:
- local (my development machine)
- dev
- qc
- uat
- live
- staging
Desejo que diferentes propriedades do aplicativo sejam usadas para cada ambiente, portanto, tenho os seguintes arquivos de propriedades, cada um com uma URL diferente para a fonte de dados:
- application.properties (containing common properties)
- application-local.properties
- application-dev.properties
- application-qc.properties
- application-uat.properties
- application-live.properties
Estou usando o IntelliJ e executando meu aplicativo usando o bootRun no plug-in Gradle na minha máquina local. Vou usar a implantação do mesmo arquivo de guerra de aplicativos em todos os outros ambientes que executam o Tomcat.
Eu tentei adicionar:
--spring.profiles.active = local
para a configuração de execução em parâmetros de script.
Eu tentei adicionar
-Dspring.profiles.active = local
para a configuração de execução em opções de VM.
Nem trabalho. Continuo vendo a mensagem INFO na inicialização, dizendo: Nenhum perfil ativo definido, voltando aos perfis padrão: padrão
Se eu executar meu aplicativo na linha de comando do Windows usando
gradle bootRun
mas primeiro defino a variável de ambiente
set SPRING_PROFILES_ACTIVE=local
Então tudo funciona.
Portanto, minha pergunta é: como ativo meu perfil de inicialização local ao executar o bootRun a partir do IntelliJ?
fonte
Respostas:
Eu adicionei
-Dspring.profiles.active=test
ao VM Options e, em seguida, executei novamente essa configuração. Funcionou perfeitamente.Isso pode ser definido por
Run | Edit Configurations...
Configuration
guiaEnvironment
seção para revelarVM options
fonte
Se você realmente usar configurações de execução de inicialização por mola (atualmente suportadas apenas na Ultimate Edition), é fácil pré-configurar os perfis na configuração "Perfis ativos".
fonte
args
no seuApplication.main()
por exemploSpringApplication.run( Application.class, args );
Tente adicionar este comando no seu build.gradle
Portanto, para executar, configure essa forma:
fonte
O Spring Boot parece ter mudado a maneira de ler as opções da VM à medida que evolui. Aqui está uma maneira de tentar quando você inicia um aplicativo no Intellij e deseja ativar algum perfil:
1. Altere as opções da VM
Abra "Editar configuração" em "Executar" e em "Opções da VM", adicione:
-Dspring.profiles.active=local
Na verdade, ele trabalha com um projeto meu com
Spring Boot v2.0.3.RELEASE
eSpring v5.0.7.RELEASE
, mas não com outro projeto comSpring Boot v2.1.1.RELEASE
eSpring v5.1.3.RELEASE
.Além disso, ao executar com Maven ou JAR, as pessoas mencionaram isso:
ou
(Veja aqui: como usar os perfis do Spring Boot )
2. Passando Args da JVM
É mencionado em algum lugar que o Spring muda a maneira de iniciar o processo de aplicativos se você especificar algumas opções da JVM; bifurca-se em outro processo e não passa o argumento recebido, para que isso não funcione. A única maneira de passar argumentos para isso é:
Novamente, isso é para Maven. https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html
3. Configuração (aplicativo) env var
O que funciona para mim no segundo projeto foi definir a variável de ambiente, conforme mencionado em algumas respostas acima: "Editar configuração" - "Variável de ambiente" e:
fonte
SPRING_PROFILES_ACTIVE
.~/.profile
ou semelhante, precisará usarSPRING_PROFILES_ACTIVE
-spring.profiles.active
provavelmente só funciona como argumento na linha de comando.Acabei adicionando o seguinte ao meu build.gradle:
Portanto, agora, ao executar o bootRun do IntelliJ, o padrão é o perfil "local".
Em nossos outros ambientes, simplesmente definiremos a variável de ambiente 'SPRING_PROFILES_ACTIVE' no Tomcat.
Eu obtive isso a partir de um comentário encontrado aqui: https://github.com/spring-projects/spring-boot/pull/592
fonte
Uma causa provável pode ser que você não passe os parâmetros da linha de comando para o método principal do aplicativo. Cometi o mesmo erro há algumas semanas.
fonte
Application
classe, o fez manualmente com a memória. Perdeu aargs
etapa e, portanto, a caixa "Perfis ativos" na configuração de execução não funcionou - tive que passar manualmente na-Dspring.profiles.active
caixa de opções da VM.Eu uso o Intellij Community Edition. Vá para "Configurações de Execução / Depuração"> guia Corredor> Variáveis de ambiente> clique no botão "...". Adicionar: SPRING_PROFILES_ACTIVE = local
spring.profiles.active
fonte
Para o Spring Boot 2.1.0 e posterior, você pode usar
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
fonte
spring-boot:run -Dspring-boot.run.profiles=local
No meu caso, usei abaixo da configuração nas opções da VM
IntelliJ
, ele não selecionava as configurações locais, mas após uma reinicializaçãoIntelliJ
selecionava os detalhes da configuraçãoIntelliJ
e o serviço começou a ser executado.fonte
Tente isso. Edite seu arquivo build.gradle conforme a seguir.
fonte
Você pode tentar a maneira acima para ativar um perfil
fonte
Defina
-Dspring.profiles.active=local
em argumentos do programa.fonte