Установка активного профиля и местоположения конфигурации из командной строки в spring boot
у меня есть приложение spring boot.
у меня есть три профиля в моем приложении ->разработка, постановка и производства. Так что у меня есть 3 файла
- разработки приложений.в формате YML
- application-staging.в формате YML
- приложения-производства.в формате 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 ответов:
есть два различных способа добавления/переопределения свойств 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 прежде чем быть нагруженный.)
при настройке профиля через 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, заполните правильный поля (т. е. аргументы программы)