Как активировать профиль загрузки Spring при запуске из IntelliJ?

У меня есть 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 = локальная

для конфигурации запуска в параметрах script.

Я попытался добавить

-Dspring.profiles.active = локальная

для конфигурации выполнения в параметрах VM.

Ни одна из них не работает. Я продолжаю видеть сообщение INFO при запуске: "Активный профиль не установлен, возвращается к профилям по умолчанию: по умолчанию

Если я запустил приложение из командной строки Windows, используя

gradle bootRun

но я сначала установил переменную окружения

set SPRING_PROFILES_ACTIVE=local

Затем все работает.

Итак, мой вопрос: как мне активировать локальный профиль загрузки spring при запуске bootRun из IntelliJ?

Ответы

Ответ 1

Я добавил -Dspring.profiles.active=test к параметрам VM, а затем снова запустил эту конфигурацию. Это сработало отлично.

Это может быть установлено

  • Выбор Run | Edit Configurations... Run | Edit Configurations...
  • Перейти на вкладку Configuration
  • Разверните раздел " Environment ", чтобы узнать VM options

Ответ 2

Если вы действительно используете конфигурации загрузки w760 > (в настоящее время поддерживаемые только в Ultimate Edition), легко предварительно настроить профили в настройках "Active Profiles".

введите описание изображения здесь

Ответ 3

В итоге я добавил следующее в мой build.gradle:

bootRun {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "local"
}

test {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test"
}

Итак, теперь при запуске bootRun из IntelliJ по умолчанию используется "локальный" профиль.

В других средах мы просто установим переменную среды SPRING_PROFILES_ACTIVE в Tomcat.

Я получил это из комментария, найденного здесь: https://github.com/spring-projects/spring-boot/pull/592

Ответ 4

Вероятная причина может заключаться в том, что вы не передаете параметры командной строки в основной метод приложений. Я совершил ту же ошибку несколько недель назад.

public static final void main(String... args) {
    SpringApplication.run(Application.class, args);
}

Ответ 5

Попробуйте добавить эту команду в свой build.gradle

enter image description here

Поэтому для запуска настройте эту форму:

enter image description here

Ответ 6

Я использую Intellij Community Edition. Перейдите в раздел "Конфигурации запуска/отладки"> вкладка "Runner"> "Переменные среды"> нажмите кнопку "...". Добавить: SPRING_PROFILES_ACTIVE = local

spring.profiles.active

Ответ 7

Spring Boot, похоже, изменил способ чтения параметров виртуальной машины по мере ее развития. Вот некоторый способ попробовать, когда вы запускаете приложение в Intellij и хотите активировать некоторый профиль:

1. Изменить параметры виртуальной машины

Откройте "Изменить конфигурацию" в "Выполнить" и в " -Dspring.profiles.active=local виртуальной машины" добавьте: -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 люди упоминали это:

mvn spring-boot:run -Drun.profiles=dev

или же

java -jar -Dspring.profiles.active=dev XXX.jar

(Смотрите здесь: как использовать профили Spring Boot)

2. Передача аргументов JVM

Где-то упоминается, что Spring меняет способ запуска процесса приложений, если вы указываете некоторые параметры JVM; он разветвляется на другой процесс и не передает полученный аргумент, так что это не работает. Единственный способ передать ему аргументы:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="..."

Опять же, это для Maven. https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html

3. Настройка (приложение) env var

Что касается меня для второго проекта, так это установка переменной среды, как упоминалось в ответе выше: "Изменить конфигурацию" - "Переменная среды", и:

spring.profiles.active=local

Ответ 8

Попробуйте это. Отредактируйте файл build.gradle следующим образом.

ext { profile = project.hasProperty('profile') ? project['profile'] : 'local' }

Ответ 9

Для Spring Boot 2.1.0 и выше вы можете использовать

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

Ответ 10

Replace your profile name with BE

Вы можете попробовать вышеуказанный способ активировать профиль

Ответ 11

Установите -Dspring.profiles.active=local соответствии с аргументами программы.