yml starter run plugin example bootjar application java spring gradle spring-boot yaml

java - run - spring boot starter web



Establecer el perfil activo y la ubicación de configuración desde la línea de comandos en el arranque de primavera (9)

Tengo una aplicación de arranque de primavera.

Tengo tres perfiles en mi aplicación-> desarrollo, puesta en escena y producción . Entonces tengo 3 archivos

  1. application-development.yml
  2. application-staging.yml
  3. application-production.yml

Mi application.yml reside dentro de src/main/resources . He configurado el perfil activo en application.yml como:

spring: profiles.active: development

Los otros 3 archivos de configuración específicos del perfil están presentes en la carpeta C:/config .

Estoy usando el complemento gradle para eclipse. Cuando intento hacer un " bootRun ", estoy configurando los argumentos de la línea de comandos en mi configuración de gradle en eclipse como

-Dspring.profiles.active=staging -Dspring.config.location=C:/Config

Sin embargo, la propiedad de la línea de comandos no se refleja y mi perfil activo siempre se configura como desarrollo (que es el que he mencionado en el archivo aplicaciones.yml). Además, la carpeta C: / Config no busca archivos de configuración específicos del perfil.

Creo que me estoy perdiendo algo aquí. He estado tratando de resolverlo durante los últimos 2 días. Pero sin suerte. Realmente apreciaria cualquier ayuda.


Al configurar el perfil a través del complemento Maven , debe hacerlo a través de run.jvmArguments

mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=production"

Con opción de depuración:

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Dspring.profiles.active=jpa"

He visto este viaje a mucha gente ... espero que ayude



Hay dos formas diferentes de agregar / anular propiedades de resorte en la línea de comando.

Opción 1: Propiedades del sistema Java (argumentos de VM)

Es importante que los parámetros -D estén antes de su application.jar, de lo contrario no se reconocerán.

java -jar -Dspring.profiles.active=prod application.jar


Opción 2: argumentos del programa

java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:/config



La respuesta de Michael Yin es correcta, ¡pero parece que se requiere una mejor explicación!

Muchos de ustedes mencionaron que -D es la forma correcta de especificar los parámetros de JVM y tienen toda la razón. Pero Michael también tiene razón como se menciona en la documentación de Spring Boot Profiles .

Lo que no está claro en la documentación es qué tipo de parámetro es: --spring.profiles.active es un parámetro JVM estándar, por lo tanto, si desea usarlo en su IDE, complete los campos correctos (es decir, argumentos del programa)


Mi mejor práctica es definir esto como un argumento VM "-D". Tenga en cuenta las diferencias entre spring boot 1.xy 2.x.

Los perfiles para habilitar se pueden especificar en la línea de comando:

Spring-Boot 2.x

-Dspring-boot.run.profiles=local

Spring-Boot 1.x

-Dspring.profiles.active=local

ejemplo de uso con maven:

Spring-Boot 2.x

mvn spring-boot:run -Dspring-boot.run.profiles=local

Spring-Boot 1.x

mvn spring-boot:run -Dspring.profiles.active=local

Asegúrese de separarlos con una coma para varios perfiles:

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

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


Tuve que agregar esto:

bootRun { String activeProfile = System.properties[''spring.profiles.active''] String confLoc = System.properties[''spring.config.location''] systemProperty "spring.profiles.active", activeProfile systemProperty "spring.config.location", "file:$confLoc" }

Y ahora bootRun recoge el perfil y las ubicaciones de configuración.

Muchas gracias @jst por el puntero.


puede usar la siguiente línea de comando:

java -jar -Dspring.profiles.active=[yourProfileName] target/[yourJar].jar


-Dspring.profiles.active=staging -Dspring.config.location=C:/Config

no es correcto.

debiera ser:

--spring.profiles.active=staging --spring.config.location=C:/Config