run plugin para intellij initializr idea configurar community spring intellij-idea gradle spring-boot

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



spring initializr intellij (10)

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?


Establezca -Dspring.profiles.active=local bajo argumentos del programa.


Intente agregar este comando en su build.gradle

Entonces, para ejecutar, configure esa forma:


Para Spring Boot 2.1.0 y superior puedes usar

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar


Prueba esto. Edite su archivo build.gradle de la siguiente manera.

ext { profile = project.hasProperty(''profile'') ? project[''profile''] : ''local'' }


Si realmente utiliza configuraciones de ejecución de arranque de resorte (actualmente solo se admite en la Edición Ultimate), es fácil configurar previamente los perfiles en la configuración de "Perfiles activos".


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=local

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

Además, cuando se ejecutaba con Maven o JAR, la gente mencionaba 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 args JVM

En alguna parte se menciona que Spring cambia la forma de iniciar el proceso de las 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:

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

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:

spring.profiles.active=local


Terminé agregando lo siguiente a mi build.gradle:

bootRun { environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "local" } test { environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test" }

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


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.

public static final void main(String... args) { SpringApplication.run(Application.class, args); }


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


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

Esto puede ser establecido por

  • Elegir Run | Edit Configurations... Run | Edit Configurations...
  • Vaya a la pestaña Configuration
  • Expanda la sección Environment para revelar las VM options