Ich habe eine Spring Boot-Anwendung.
Ich habe drei Profile in meiner Anwendung -> Entwicklung, Inszenierung und Produktion . Ich habe also 3 Dateien
- application-development.yml
- application-staging.yml
- application-product.yml
Meine application.yml befindet sich im Inneren src/main/resources
. Ich habe das aktive Profil in application.yml wie folgt festgelegt:
spring:
profiles.active: development
Die anderen 3 profilspezifischen Konfigurationsdateien befinden sich im C:\config
Ordner.
Ich benutze Gradle Plugin für Eclipse. Wenn ich versuche, einen " bootRun " durchzuführen , setze ich die Befehlszeilenargumente in meiner Gradle-Konfiguration in Eclipse als
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config
Die Befehlszeileneigenschaft wird jedoch nicht wiedergegeben und mein aktives Profil wird immer als Entwicklung festgelegt (das ist das, das ich in der Datei applications.yml erwähnt habe). Auch der Ordner C: \ Config wird nicht nach profilspezifischen Konfigurationsdateien durchsucht.
Ich glaube, mir fehlt hier etwas. Ich habe in den letzten 2 Tagen versucht, es herauszufinden. Aber kein Glück. Ich würde mich über jede Hilfe sehr freuen.
bootRun
Kommandozeile hinzufügenAntworten:
Es gibt zwei verschiedene Möglichkeiten, Federeigenschaften in der Befehlszeile hinzuzufügen / zu überschreiben.
Option 1: Java-Systemeigenschaften (VM-Argumente)
Es ist wichtig, dass die -D-Parameter vor Ihrer application.jar liegen, da sie sonst nicht erkannt werden.
Option 2: Programmargumente
quelle
SPRING_PROFILES_ACTIVE
~/.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
Meine beste Vorgehensweise besteht darin, dies als VM "-D" -Argument zu definieren. Bitte beachten Sie die Unterschiede zwischen Spring Boot 1.x und 2.x.
Die zu aktivierenden Profile können in der Befehlszeile angegeben werden:
Spring-Boot 2.x.
Spring-Boot 1.x.
Beispiel für die Verwendung mit Maven:
Spring-Boot 2.x.
Spring-Boot 1.x.
Stellen Sie sicher, dass Sie sie für mehrere Profile durch ein Komma trennen:
quelle
-Dspring-boot.run.profiles=local
habe nicht funktioniert, hat-Dspring.profiles.active=local
funktioniert.-Dspring-boot.run.profiles
und-Dspring.profiles.active
Ich musste Folgendes hinzufügen:
Und jetzt nimmt bootRun die Profil- und Konfigurationsspeicherorte auf.
Vielen Dank @jst für den Zeiger.
quelle
bootRun { systemProperties = System.properties }
. Dieser Befehl kopiert alle mit dem-D
Schalter übergebenen Parameter mit denselben Tasten, die zugeordnet werden sollensystemProperty
.das ist nicht richtig.
sollte sein:
quelle
java -Dspring.profiles.active=staging -Dspring.config.location=C:\Config your-spring-boot-app.jar
ORjava your-spring-boot.jar --spring.profiles.active=staging --spring.config.location=C:\Config
Sie können die folgende Befehlszeile verwenden:
quelle
Es gibt eine andere Art und Weise durch die Einstellung OS Variable, SPRING_PROFILES_ACTIVE .
für zB:
Referenz: So legen Sie aktive Federprofile fest
quelle
Wenn Sie das Profil über das Maven-Plugin einstellen , müssen Sie dies über tun
run.jvmArguments
Mit Debug-Option:
Ich habe diese Reise viele Leute gesehen ... hoffentlich hilft es
quelle
mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar
, siehe: 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"
Ich denke, Ihr Problem hängt wahrscheinlich damit zusammen, dass Ihre spring.config.location den Pfad nicht mit "/" beendet.
Zitieren Sie die Dokumente
http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files
quelle
Michael Yins Antwort ist richtig, aber eine bessere Erklärung scheint erforderlich zu sein!
Viele von Ihnen haben erwähnt, dass dies
-D
der richtige Weg ist, um JVM-Parameter anzugeben, und Sie haben absolut Recht. Aber Michael hat auch Recht, wie in der Dokumentation zu Spring Boot Profiles erwähnt.Was in der Dokumentation nicht klar ist, ist, um welche Art von Parameter es sich handelt: Es
--spring.profiles.active
handelt sich nicht um einen Standard-JVM-Parameter. Wenn Sie ihn also in Ihrer IDE verwenden möchten, füllen Sie die richtigen Felder aus (dh Programmargumente).quelle
Wenn Sie Gradle verwenden:
quelle