Как активировать профиль загрузки 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
соответствии с аргументами программы.