Tengo 5 ambientes:
 - local (my development machine)
 - dev
 - qc
 - uat
 - live
 - staging
Quiero que se usen diferentes propiedades de aplicación para cada entorno, por lo que tengo los siguientes archivos de propiedades, cada uno con una URL diferente para el origen de datos:
 - application.properties  (containing common properties)
 - application-local.properties
 - application-dev.properties
 - application-qc.properties
 - application-uat.properties
 - application-live.properties
Estoy usando IntelliJ y ejecuto mi aplicación usando bootRun en el complemento Gradle en mi máquina local. Usaré la implementación del mismo archivo war de aplicación en todos los demás entornos que ejecutan Tomcat.
He intentado agregar:
--spring.profiles.active = local
a la configuración de ejecución bajo parámetros de script.
He intentado agregar
-Dspring.profiles.active = local
a la configuración de ejecución en las opciones de VM.
Ni trabajo. Sigo viendo el mensaje INFO en el inicio que dice: No hay un perfil activo establecido, volviendo a los perfiles predeterminados: predeterminado
Si ejecuto mi aplicación desde la línea de comandos de Windows usando
gradle bootRun
pero primero configuré la variable de entorno
set SPRING_PROFILES_ACTIVE=local
Entonces todo funciona.
Entonces mi pregunta es, ¿cómo activo mi perfil de arranque de resorte local cuando ejecuto bootRun desde IntelliJ?
fuente

Respuestas:
Agregué
-Dspring.profiles.active=testa VM Options y luego volví a ejecutar esa configuración. Funcionó perfectamente.Esto puede ser establecido por
Run | Edit Configurations...ConfigurationpestañaEnvironmentsección para revelarVM optionsfuente
Si realmente utiliza las configuraciones de ejecución de arranque por resorte (actualmente solo se admite en la edición Ultimate), es fácil configurar previamente los perfiles en la configuración de "Perfiles activos".
fuente
argsen suApplication.main()egSpringApplication.run( Application.class, args );Intente agregar este comando en su build.gradle
Entonces, para ejecutar, configure esa forma:
fuente
Spring Boot parece haber cambiado la forma de leer las opciones de VM a medida que evoluciona. Aquí hay alguna forma de probar cuando inicia una aplicación en Intellij y desea activar algún perfil:
1. Cambiar las opciones de VM
Abra "Editar configuración" en "Ejecutar" y en "Opciones de VM", agregue:
-Dspring.profiles.active=localRealmente funciona con un proyecto mío con
Spring Boot v2.0.3.RELEASEySpring v5.0.7.RELEASE, pero no con otro proyecto conSpring Boot v2.1.1.RELEASEySpring v5.1.3.RELEASE.Además, cuando se ejecutaba con Maven o JAR, la gente mencionaba esto:
o
(Ver aquí: cómo usar los perfiles Spring Boot )
2. Pasar args JVM
En alguna parte se menciona que Spring cambia la forma de iniciar el proceso de aplicaciones si especifica algunas opciones de JVM; bifurca otro proceso y no pasará el argumento que recibió, por lo que esto no funciona. La única forma de pasarle argumentos es:
De nuevo, esto es para Maven. https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html
3. Configuración (aplicación) env var
Lo que me funcionó para el segundo proyecto fue establecer la variable de entorno, como se menciona en alguna respuesta anterior: "Editar configuración" - "Variable de entorno", y:
fuente
SPRING_PROFILES_ACTIVE.~/.profileo similar, debe usarloSPRING_PROFILES_ACTIVE;spring.profiles.activeprobablemente solo funcione como un argumento en la línea de comando.Terminé agregando lo siguiente a mi build.gradle:
Así que ahora, cuando ejecuta bootRun desde IntelliJ, el valor predeterminado es el perfil "local".
En nuestros otros entornos, simplemente configuraremos la variable de entorno 'SPRING_PROFILES_ACTIVE' en Tomcat.
Obtuve esto de un comentario encontrado aquí: https://github.com/spring-projects/spring-boot/pull/592
fuente
Una causa probable podría ser que no pase los parámetros de la línea de comandos al método principal de la aplicación. Cometí el mismo error hace algunas semanas.
fuente
Applicationclase, así que lo hice a mano desde la memoria. Perdí elargspaso y, por lo tanto, el cuadro "Perfiles activos" en la configuración de ejecución no funcionó, tuve que pasarlo manualmente-Dspring.profiles.activeen el cuadro de opciones de VM.Yo uso la Intellij Community Edition. Vaya a "Configuraciones de ejecución / depuración"> pestaña Ejecutador> Variables de entorno> haga clic en el botón "...". Añadir: SPRING_PROFILES_ACTIVE = local
spring.profiles.active
fuente
Para Spring Boot 2.1.0 y posterior puede usar
mvn spring-boot:run -Dspring-boot.run.profiles=foo,barfuente
spring-boot:run -Dspring-boot.run.profiles=localEn mi caso, utilicé la configuración a continuación en las opciones de VM en
IntelliJ, no estaba seleccionando las configuraciones locales, pero después de reiniciarIntelliJ, seleccionó los detalles de configuraciónIntelliJy el servicio comenzó a ejecutarse.fuente
Prueba esto. Edite su archivo build.gradle de la siguiente manera.
fuente
Puedes probar la forma anterior para activar un perfil
fuente
Establecer
-Dspring.profiles.active=localbajo argumentos del programa.fuente