У меня 5 сред:
- local (my development machine)
- dev
- qc
- uat
- live
- staging
Я хочу, чтобы для каждой среды использовались разные свойства приложения, поэтому у меня есть следующие файлы свойств, каждый из которых имеет свой URL-адрес для источника данных:
- application.properties (containing common properties)
- application-local.properties
- application-dev.properties
- application-qc.properties
- application-uat.properties
- application-live.properties
Я использую IntelliJ и запускаю свое приложение с помощью bootRun в плагине Gradle на моем локальном компьютере. Я буду использовать развертывание того же файла войны приложения во всех других средах, в которых работает Tomcat.
Я пробовал добавить:
--spring.profiles.active = локальная
к конфигурации запуска в параметрах скрипта.
Я пробовал добавить
-Dspring.profiles.active = локальная
к конфигурации запуска в параметрах ВМ.
Ни работать. Я продолжаю видеть сообщение INFO при запуске, в котором говорится: Активный профиль не установлен, возврат к профилям по умолчанию: по умолчанию
Если я запустил свое приложение из командной строки Windows, используя
gradle bootRun
но сначала я установил переменную среды
set SPRING_PROFILES_ACTIVE=local
Дальше все работает.
Итак, мой вопрос: как мне активировать свой локальный загрузочный профиль Spring при запуске bootRun из IntelliJ?
источник
Ответы:
Я добавил
-Dspring.profiles.active=test
в параметры виртуальной машины, а затем повторно запустил эту конфигурацию. Это сработало отлично.Это может быть установлено
Run | Edit Configurations...
Configuration
вкладкуEnvironment
раздел, чтобы увидетьVM options
источник
Если вы действительно используете конфигурации весенней загрузки (в настоящее время поддерживаются только в Ultimate Edition), легко предварительно настроить профили в настройке «Активные профили».
источник
args
в вашемApplication.main()
напримерSpringApplication.run( Application.class, args );
Попробуйте добавить эту команду в свой build.gradle
Итак, для запуска настройте эту форму:
источник
Spring Boot, похоже, изменил способ чтения параметров виртуальной машины по мере его развития. Вот как можно попробовать, когда вы запускаете приложение в Intellij и хотите активировать какой-то профиль:
1. Измените параметры виртуальной машины.
Откройте «Изменить конфигурацию» в «Выполнить» и в «Параметры ВМ» добавьте:
-Dspring.profiles.active=local
На самом деле он работает с одним моим проектом с
Spring Boot v2.0.3.RELEASE
иSpring v5.0.7.RELEASE
, но не с другим проектом сSpring Boot v2.1.1.RELEASE
иSpring v5.1.3.RELEASE
.Кроме того, при работе с Maven или JAR люди упоминали об этом:
или
(См. Здесь: как использовать профили Spring Boot )
2. Передача аргументов JVM
Где-то упоминается, что Spring изменяет способ запуска процесса приложений, если вы указываете некоторые параметры JVM; он разветвляет другой процесс и не передает полученный аргумент, поэтому это не работает. Единственный способ передать ему аргументы:
Опять же, это для Maven. https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html
3. Настройка (приложение) env var
Что мне подходит для второго проекта, так это установка переменной среды, как упоминалось в ответе выше: «Изменить конфигурацию» - «Переменная среды» и:
источник
SPRING_PROFILES_ACTIVE
.~/.profile
или что-то подобное, вам нужно использоватьSPRING_PROFILES_ACTIVE
-spring.profiles.active
скорее всего, работает только как аргумент в командной строке.В итоге я добавил в свой build.gradle следующее:
Итак, теперь при запуске bootRun из IntelliJ по умолчанию используется «локальный» профиль.
В других наших средах мы просто установим переменную среды SPRING_PROFILES_ACTIVE в Tomcat.
Я получил это из комментария, найденного здесь: https://github.com/spring-projects/spring-boot/pull/592
источник
Вероятная причина может заключаться в том, что вы не передаете параметры командной строки в основной метод приложения. Я совершил ту же ошибку несколько недель назад.
источник
Application
класс автоматически, поэтому делал это вручную из памяти. Пропустил этотargs
шаг, поэтому поле «Активные профили» в конфигурации запуска не работало - мне пришлось вручную передать его-Dspring.profiles.active
в поле параметров виртуальной машины.Я использую Intellij Community Edition. Перейдите в «Запуск / отладка конфигураций»> вкладка «Runner»> «Переменные среды»> нажмите кнопку «...». Добавить: SPRING_PROFILES_ACTIVE = local
spring.profiles.active
источник
Для Spring Boot 2.1.0 и более поздних версий вы можете использовать
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
источник
spring-boot:run -Dspring-boot.run.profiles=local
В моем случае я использовал приведенную ниже конфигурацию в параметрах виртуальной машины
IntelliJ
, он не выбирал локальные конфигурации, но после перезапускаIntelliJ
он выбирал детали конфигурации,IntelliJ
и служба запускалась.источник
Попробуй это. Отредактируйте файл build.gradle следующим образом.
источник
Вы можете попробовать описанный выше способ активировать профиль.
источник
Устанавливается
-Dspring.profiles.active=local
в аргументах программы.источник