У меня есть приложение весенней загрузки.
У меня есть три профиля в моем приложении -> разработка, подготовка и производство . Итак, у меня есть 3 файла
- Приложение-development.yml
- Приложение-staging.yml
- Приложение-production.yml
Мой application.yml находится внутри src/main/resources
. Я установил активный профиль в application.yml как:
spring:
profiles.active: development
Другие 3 специфических профиля профиля находятся в C:\config
папке.
Я использую плагин Gradle для затмения. Когда я пытаюсь выполнить « bootRun », я задаю аргументы командной строки в моей конфигурации gradle в eclipse как
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
Тем не менее, свойство командной строки не отражается, и мой активный профиль всегда устанавливается как разработка (это то, что я упомянул в файле application.yml). Кроме того, в папке C: \ Config не выполняется поиск определенных конфигурационных файлов профиля.
Я думаю, что я что-то здесь упускаю. Я пытался понять это в течение последних 2 дней. Но не повезло. Я был бы очень признателен за любую помощь.
bootRun
командную строкуОтветы:
Есть два разных способа добавить / переопределить свойства пружины в командной строке.
Вариант 1: Свойства системы Java (Аргументы ВМ)
Важно, чтобы параметры -D были перед вашим application.jar, иначе они не будут распознаны.
Вариант 2: программные аргументы
java -jar application.jar --spring.profiles.active = prod --spring.config.location = c: \ configисточник
SPRING_PROFILES_ACTIVE
экспортированную через~/.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
Моя лучшая практика - определять это как аргумент виртуальной машины "-D". Обратите внимание на различия между пружинными ботинками 1.x и 2.x.
Профили для включения могут быть указаны в командной строке:
Spring-Boot 2.x
Spring-Boot 1.x
Пример использования с Maven:
Spring-Boot 2.x
Spring-Boot 1.x
Обязательно разделяйте их запятой для нескольких профилей:
источник
-Dspring-boot.run.profiles=local
не работал,-Dspring.profiles.active=local
работал.-Dspring-boot.run.profiles
и-Dspring.profiles.active
Я должен был добавить это:
И теперь bootRun подбирает профиль и конфигурационные места.
Большое спасибо @jst за указатель.
источник
bootRun { systemProperties = System.properties }
. Эта команда скопирует все параметры, переданные с помощью-D
ключа с теми же ключами, наsystemProperty
карту.не является правильным.
должно быть:
источник
java -Dspring.profiles.active=staging -Dspring.config.location=C:\Config your-spring-boot-app.jar
ИЛИjava your-spring-boot.jar --spring.profiles.active=staging --spring.config.location=C:\Config
Вы можете использовать следующую командную строку:
источник
Есть другой способ, установив переменную ОС , SPRING_PROFILES_ACTIVE .
например:
Справка: Как установить активные профили Spring
источник
При настройке профиля через плагин Maven вы должны сделать это через
run.jvmArguments
С опцией отладки:
Я видел эту поездку много людей вверх .. надеюсь, это помогает
источник
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
, см .: 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"
Я думаю, что ваша проблема, вероятно, связана с тем, что ваш spring.config.location не заканчивает путь с помощью "/".
Цитировать документы
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files
источник
Ответ Михаэля Инь верен, но, похоже, требуется лучшее объяснение!
Многие из вас упоминали, что
-D
это правильный способ указать параметры JVM, и вы абсолютно правы. Но Майкл также прав, как указано в документации по Spring Boot Profiles .В документации неясно, что это за параметр:
--spring.profiles.active
это не стандартный параметр JVM, поэтому, если вы хотите использовать его в своей среде IDE, заполните правильные поля (то есть аргументы программы)источник
Если вы используете Gradle:
источник