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:\config
carpeta.
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.
bootRun
lí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_ACTIVE
exportada a través de~/.bash_profile
.export SPRING_PROFILES_ACTIVE=e2e
java -Dspring.profiles.active=$ENV -Dspring.config.location=file:///aws-secrets-manager/properties/application-$ENV.properties /code/app.jar
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
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=local
no funcionó,-Dspring.profiles.active=local
funcionó.-Dspring-boot.run.profiles
y-Dspring.profiles.active
Tuve 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-D
interruptor con las mismas teclas parasystemProperty
asignar.no es correcto.
debiera ser:
fuente
java -Dspring.profiles.active=staging -Dspring.config.location=C:\Config your-spring-boot-app.jar
ORjava your-spring-boot.jar --spring.profiles.active=staging --spring.config.location=C:\Config
puede 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.jvmArguments
Con 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
-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: no
--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)fuente
Si usa Gradle:
fuente