¿Cómo activo un perfil Spring Boot cuando ejecuto desde IntelliJ?

Resuelto dleerob asked hace 8 años • 19 respuestas

Tengo 5 ambientes:

 - local (my development machine)
 - dev
 - qc
 - uat
 - live
 - staging

Quiero que se utilicen diferentes propiedades de la aplicación para cada entorno, por lo que tengo los siguientes archivos de propiedades, cada uno de los cuales tiene una URL diferente para la fuente 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 ejecutando 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 en los parámetros del script.

He intentado agregar

-Dspring.profiles.active=local

a la configuración de ejecución en las opciones de VM.

Ninguno de los dos funciona. Sigo viendo el mensaje INFORMACIÓN al inicio que dice: No hay ningún 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 configuro la variable de entorno

set SPRING_PROFILES_ACTIVE=local

Entonces todo funciona.

Entonces mi pregunta es, ¿cómo activo mi perfil de arranque de primavera local cuando ejecuto bootRun desde IntelliJ?

dleerob avatar Sep 28 '16 12:09 dleerob
Aceptado

Agregué -Dspring.profiles.active=testa VM Options y luego volví a ejecutar esa configuración. Funcionó perfectamente.

Esto se puede configurar mediante

  • EligiendoRun | Edit Configurations...
  • Ir a la Configurationpestaña
  • Expande la Environmentsección para revelarVM options
Thom avatar Jun 05 '2017 17:06 Thom

Si realmente utiliza las configuraciones de ejecución de Spring Boot (actualmente solo se admiten en Ultimate Edition), es fácil preconfigurar los perfiles en la configuración "Perfiles activos".

ingrese la descripción de la imagen aquí

Daniel Bubenheim avatar Sep 29 '2016 16:09 Daniel Bubenheim

Probado con IntelliJ Community edición 2021.x

Puede crear varias configuraciones, una para un perfil específico. En mi caso a continuación, he creado una configuración de desarrollo con la variable de entorno del perfil de desarrollo.

  1. Ir a Ejecutar > Editar configuración
  2. Elija la configuración que desea editar, a la izquierda debajo de Aplicación.
  3. En el lado derecho > En Variable de entorno, actualice spring.profiles.active=<your profile name> el ejemplo spring.profiles.active=dev (observador: la variable debe estar sin el indicador -D)
  4. Guarde los cambios y ejecute la aplicación Spring Boot con la misma configuración.

Nota: – También puede crear una nueva configuración o copiar la existente en el paso 2 anterior, utilizando la opción disponible en el mismo panel.

ingrese la descripción de la imagen aquí

puneetShanbhag avatar Aug 20 '2021 19:08 puneetShanbhag

Spring Boot parece haber cambiado la forma de leer las opciones de VM a medida que evoluciona. A continuación se muestra una forma de probar cuando inicia una aplicación en Intellij y desea activar algún perfil:

1. Cambiar las opciones de la máquina virtual

Abra "Editar configuración" en "Ejecutar" y en "Opciones de VM", agregue:-Dspring.profiles.active=local

En realidad, funciona con un proyecto mío con Spring Boot v2.0.3.RELEASEy Spring v5.0.7.RELEASE, pero no con otro proyecto con Spring Boot v2.1.1.RELEASEy Spring v5.1.3.RELEASE.

Además, cuando se ejecuta con Maven o JAR, la gente menciona esto:

mvn spring-boot:run -Drun.profiles=dev

o

java -jar -Dspring.profiles.active=dev XXX.jar

(Ver aquí: cómo usar los perfiles Spring Boot )

2. Pasar argumentos de JVM

Se menciona en alguna parte que Spring cambia la forma de iniciar el proceso de aplicaciones si especifica algunas opciones de JVM; bifurca otro proceso y no pasa el argumento que recibió, por lo que esto no funciona. La única forma de pasarle argumentos es:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="..."

Nuevamente, 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 funciona para el segundo proyecto fue configurar la variable de entorno, como se menciona en alguna respuesta anterior: "Editar configuración" - "Variable de entorno" y:

SPRING_PROFILES_ACTIVE=local
WesternGun avatar Feb 13 '2019 10:02 WesternGun

Intente agregar este comando en su build.gradle

ingrese la descripción de la imagen aquí

Entonces, para ejecutar, configure esa forma:

ingrese la descripción de la imagen aquí

emerson moura avatar Nov 08 '2018 16:11 emerson moura