2016-09-28 3 views
19

У меня есть 5 сред:Как активировать профиль Spring Boot при запуске из IntelliJ?

- 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 = местный

к конфигурации запуска по опционам VM.

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

Если я запускаю мое приложение из командного окна строки с помощью

gradle bootRun 

, но я первый набор переменная среды

set SPRING_PROFILES_ACTIVE=local 

Тогда все работает.

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

+0

Почему вы используете приложение с помощью градиента? Не было бы в 10 раз удобнее использовать конфигурацию запуска? Есть поле, где вы можете установить профили для включения ... –

+0

Я использую конфигурацию запуска в IntelliJ, как объяснялось выше. Это не работает. – dleerob

+0

Нет, нет. Речь идет о конфигурации «Spring Boot run» «Run -> Edit configuration> New> Spring Boot. –

ответ

2

я в конечном итоге добавив следующие моей 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

0

Set -Dspring.profiles.active = local по параметрам программы, без кавычек.

+0

Я снял цитаты из моего вопроса выше. Я фактически не использую кавычки, я просто пытался показать, что именно я помещал в поля конфигурации запуска – dleerob

+0

, вы имеете в виду параметры виртуальной машины! –

3

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

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

Спасибо за ответ и предложение, однако я передаю аргументы в. – dleerob

+0

Это решено мое. – jbarrameda

+0

Это фактически устранило мою проблему. По какой-то причине, когда я создавал проект с использованием Gradle, он не автоматически генерировал свой класс «Application», а сделал это вручную из памяти. Пропустил шаг «args», и поэтому поле «Active Profiles» в конфигурации запуска не сработало - мне пришлось вручную передать «-Dspring.profiles.active» в окне параметров VM. –

31

Если вы на самом деле использовать конфигурации прогона пружинных загрузок (в настоящее время поддерживается только в Ultimate Edition) легко предварительно настроить профили в настройке «Активные профили».

enter image description here

+0

Спасибо, я уверен, что это сработает, однако я не использую конфигурацию запуска Spring Boot, я использую конфигурацию запуска Gradle, у которой нет поля «Active Profiles». Мои фильтры градировки строят фильтры и модифицируют некоторые из файлов свойств, которые он копирует в каталог сборки, поэтому для этого я использую конфигурацию запуска класса. – dleerob

+0

добро пожаловать. Надеюсь, что вы решили проблему, а затем –

+0

Как указывалось выше, если это не работает для вас, убедитесь, что вы передаете 'args' в свой' Application.main() 'eg' SpringApplication.run (Application .class, args); ' –

25

Я пошел в Edit Configurations ...

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

enter image description here

0

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

ext { profile = project.hasProperty('profile') ? project['profile'] : 'local' } 
Смежные вопросы