Mam aplikację do rozruchu sprężynowego.
Mam trzy profile w mojej aplikacji -> programowanie, przygotowywanie i produkcja . Więc mam 3 pliki
- application-development.yml
- application-staging.yml
- application-production.yml
Moja application.yml znajduje się w środku src/main/resources
. Ustawiłem aktywny profil w application.yml jako:
spring:
profiles.active: development
Pozostałe 3 pliki konfiguracyjne specyficzne dla profilu znajdują się w C:\config
folderze.
Używam wtyczki Gradle do Eclipse. Kiedy próbuję wykonać " bootRun ", ustawiam argumenty wiersza poleceń w mojej konfiguracji gradle w eclipse jako
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
Jednak właściwość wiersza poleceń nie jest odzwierciedlana, a mój aktywny profil jest zawsze ustawiany jako programistyczny (czyli ten, o którym wspomniałem w pliku applications.yml). Również folder C: \ Config nie jest przeszukiwany pod kątem plików konfiguracyjnych specyficznych dla profilu.
Myślę, że czegoś tu brakuje. Próbowałem to rozgryźć przez ostatnie 2 dni. Ale bez szczęścia. Naprawdę doceniłbym każdą pomoc.
bootRun
linię poleceńOdpowiedzi:
Istnieją dwa różne sposoby dodawania / zastępowania właściwości sprężyny w wierszu poleceń.
Opcja 1: Właściwości systemu Java (argumenty maszyny wirtualnej)
Ważne jest, aby parametry -D znajdowały się przed plikiem application.jar, w przeciwnym razie nie zostaną rozpoznane.
Opcja 2: Programowanie argumentów
java -jar application.jar --spring.profiles.active = prod --spring.config.location = c: \ configźródło
SPRING_PROFILES_ACTIVE
wyeksportowanej za pośrednictwem~/.bash_profile
.export SPRING_PROFILES_ACTIVE=e2e
java -Dspring.profiles.active=$ENV -Dspring.config.location=file:///aws-secrets-manager/properties/application-$ENV.properties /code/app.jar
Moją najlepszą praktyką jest zdefiniowanie tego jako argumentu „-D” maszyny wirtualnej. Zwróć uwagę na różnice między butem sprężynowym 1.x i 2.x.
Profile do włączenia można określić w wierszu poleceń:
Spring-Boot 2.x
Spring-Boot 1.x
Przykładowe użycie z maven:
Spring-Boot 2.x
Spring-Boot 1.x
Pamiętaj, aby oddzielić je przecinkami dla wielu profili:
źródło
-Dspring-boot.run.profiles=local
nie działało,-Dspring.profiles.active=local
działało.-Dspring-boot.run.profiles
i-Dspring.profiles.active
Musiałem to dodać:
A teraz bootRun wybiera lokalizacje profilu i konfiguracji.
Wielkie dzięki @jst za wskaźnik.
źródło
bootRun { systemProperties = System.properties }
. To polecenie skopiuje wszystkie parametry przekazane za pomocą-D
przełącznika z tymi samymi kluczami dosystemProperty
mapowania.nie jest poprawne.
Powinien być:
źródło
java -Dspring.profiles.active=staging -Dspring.config.location=C:\Config your-spring-boot-app.jar
LUBjava your-spring-boot.jar --spring.profiles.active=staging --spring.config.location=C:\Config
możesz użyć następującego wiersza poleceń:
źródło
Istnieje inny sposób, ustawiając zmienną systemu operacyjnego , SPRING_PROFILES_ACTIVE .
na przykład:
Odniesienie: Jak ustawić aktywne profile sprężyn
źródło
Ustawiając profil za pomocą wtyczki Maven należy to zrobić za pomocą
run.jvmArguments
Z opcją debugowania:
Widziałem tę wycieczkę wiele osób… mam nadzieję, że to pomoże
źródło
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
, zobacz: docs.spring.io/spring-boot/docs/current/maven-plugin/examples/…springmvn="mvn clean spring-boot:run -Dspring.profiles.active=local -Dspring-boot.run.profiles=local"
Myślę, że twój problem jest prawdopodobnie związany z tym, że twoja spring.config.location nie kończy ścieżki znakiem „/”.
Cytuj dokumenty
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files
źródło
Odpowiedź Michaela Yina jest poprawna, ale wydaje się, że potrzebne jest lepsze wyjaśnienie!
Wielu z Was wspomniało, że
-D
jest to właściwy sposób określania parametrów JVM i macie całkowitą rację. Ale Michael ma również rację, jak wspomniano w Spring Boot Profiles dokumentacji .W dokumentacji nie jest jasne, jakiego rodzaju jest to parametr:
--spring.profiles.active
nie jest to standardowy parametr JVM, więc jeśli chcesz go użyć w swoim IDE, wypełnij odpowiednie pola (tj. Argumenty programu)źródło
Jeśli używasz Gradle:
źródło