Установка активного профиля и местоположения конфигурации из командной строки в spring boot


у меня есть приложение spring boot.

у меня есть три профиля в моем приложении ->разработка, постановка и производства. Так что у меня есть 3 файла

  1. разработки приложений.в формате YML
  2. application-staging.в формате YML
  3. приложения-производства.в формате YML

мой приложение.в формате YML внутри src/main/resources. Я установил активный профиль в приложении.в формате YML как :

spring:
  profiles.active: development

другой 3 профильные конфигурационные файлы присутствуют в .

Я использую плагин gradle для eclipse. Когда я пытаюсь сделать "bootRun", Я устанавливаю аргументы командной строки в моей конфигурации gradle в eclipse как

 -Dspring.profiles.active=staging -Dspring.config.location=C:Config

однако свойство командной строки не отражается, и мой активный профиль всегда устанавливается как разработка(это тот, который я упомянул в приложениях.файл YML). Также C:Config папка не является поиск профильных файлов конфигурации.

Я думаю, что я что-то пропустил. Я пытался выяснить это в течение последних 2 дней. Но не повезло. Я бы очень признателен за любую помощь.

8 65

8 ответов:

есть два различных способа добавления/переопределения свойств spring в командной строке.

Вариант 1: системные свойства Java (Аргументы VM)

важно, чтобы параметры-D были перед вашим приложением.сосуд в противном случае они не признаются.

java -jar -Dspring.profiles.active=prod application.jar


Вариант 2: аргументы программы

java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:\config

Я должен был добавить это:

bootRun {
    String activeProfile =  System.properties['spring.profiles.active']
    String confLoc = System.properties['spring.config.location']
    systemProperty "spring.profiles.active", activeProfile
    systemProperty "spring.config.location", "file:$confLoc"
}

и теперь bootRun выбирает расположение профиля и конфигурации.

большое спасибо @jst за указатель.

-Dspring.profiles.active=staging -Dspring.config.location=C:\Config

это не правильно.

должно быть:

--spring.profiles.active=staging --spring.config.location=C:\Config

вы можете использовать следующую командную строку:

java -jar -Dspring.profiles.active=[yourProfileName] target/[yourJar].jar

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

цитата документы

Если весна.конфиг.расположение содержит каталоги (в отличие от файлов) они должны заканчиваться в / (и будут добавлены с именами, сгенерированными из spring.config.name прежде чем быть нагруженный.)

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files

при настройке профиля через Maven плагин вы должны сделать это через run.jvmArguments

mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=production"

С опцией отладки:

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Dspring.profiles.active=jpa"

Я видел эту поездку много народа..надеюсь, это поможет

есть другой способ, установив OS переменная SPRING_PROFILES_ACTIVE.

например :

SPRING_PROFILES_ACTIVE=dev gradle clean bootRun

ссылки : Как установить активные профили пружины

ответ Майкла Инь правильный, но, похоже, требуется лучшее объяснение!

многие из вас упоминали об этом -D правильно указать параметры JVM и вы абсолютно правы. Но Майкл также прав, как упоминалось в Spring Boot Profiles документация.

что не понятно в документации, это какой это параметр:--spring.profiles.active не является стандартным параметром JVM, поэтому, если вы хотите использовать его в своей IDE, заполните правильный поля (т. е. аргументы программы)