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
- application-development.yml
- application-staging.yml
- application-production.yml
Mi application.yml reside dentro 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 C:\configcarpeta.
Estoy usando el complemento gradle para eclipse. Cuando intento hacer un " bootRun ", estoy configurando los argumentos de la línea de comando en mi configuración de gradle en eclipse como
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
Sin embargo, la propiedad de línea de comando 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.

bootRunlínea de comando también?Respuestas:
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.
Opción 2: argumentos del programa
java -jar application.jar --spring.profiles.active = prod --spring.config.location = c: \ configfuente
SPRING_PROFILES_ACTIVEexportada a través de~/.bash_profile.export SPRING_PROFILES_ACTIVE=e2ejava -Dspring.profiles.active=$ENV -Dspring.config.location=file:///aws-secrets-manager/properties/application-$ENV.properties /code/app.jarMi 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
Spring-Boot 1.x
ejemplo de uso con maven:
Spring-Boot 2.x
Spring-Boot 1.x
Asegúrese de separarlos con una coma para varios perfiles:
fuente
-Dspring-boot.run.profiles=localno funcionó,-Dspring.profiles.active=localfuncionó.-Dspring-boot.run.profilesy-Dspring.profiles.activeTuve que agregar esto:
Y ahora bootRun recoge el perfil y las ubicaciones de configuración.
Muchas gracias @jst por el puntero.
fuente
bootRun { systemProperties = System.properties }. Este comando copiará todos los parámetros pasados con el-Dinterruptor con las mismas teclas parasystemPropertyasignar.no es correcto.
debiera ser:
fuente
java -Dspring.profiles.active=staging -Dspring.config.location=C:\Config your-spring-boot-app.jarORjava your-spring-boot.jar --spring.profiles.active=staging --spring.config.location=C:\Configpuede usar la siguiente línea de comando:
fuente
Hay otra forma de configurar la variable del sistema operativo , SPRING_PROFILES_ACTIVE .
por ejemplo:
Referencia: Cómo configurar perfiles Spring activos
fuente
Al configurar el perfil a través del complemento Maven , debe hacerlo a través de
run.jvmArgumentsCon la opción de depuración:
He visto este viaje a mucha gente ... espero que ayude
fuente
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar, ver: docs.spring.io/spring-boot/docs/current/maven-plugin/examples/…springmvn="mvn clean spring-boot:run -Dspring.profiles.active=local -Dspring-boot.run.profiles=local"Creo que su problema probablemente esté relacionado con su ubicación spring.config.location no termina la ruta con "/".
Cita los documentos
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files
fuente
¡La respuesta de Michael Yin es correcta pero parece que se requiere una mejor explicación!
Muchos de ustedes mencionaron que esa
-Des 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: no
--spring.profiles.activees un parámetro JVM estándar, por lo tanto, si desea usarlo en su IDE, complete los campos correctos (es decir, argumentos del programa)fuente
Si usa Gradle:
fuente