wake-up-neo.com

Wie aktiviere ich ein Spring Boot-Profil, wenn ich von IntelliJ aus laufe?

Ich habe 5 Umgebungen:

 - local (my development machine)
 - dev
 - qc
 - uat
 - live
 - staging

Ich möchte, dass für jede Umgebung unterschiedliche Anwendungseigenschaften verwendet werden. Daher habe ich die folgenden Eigenschaftendateien, die jeweils eine andere URL für die Datenquelle haben:

 - application.properties  (containing common properties)
 - application-local.properties
 - application-dev.properties
 - application-qc.properties
 - application-uat.properties
 - application-live.properties

Ich verwende IntelliJ und führe meine App mit bootRun im Gradle-Plugin auf meinem lokalen Computer aus. Ich werde in allen anderen Umgebungen, in denen Tomcat ausgeführt wird, dieselbe Anwendungs-War-Datei bereitstellen.

Ich habe versucht, Folgendes hinzuzufügen: 

--spring.profiles.active = local

zur Laufkonfiguration unter Skriptparametern.

Ich habe versucht, hinzuzufügen 

-Dspring.profiles.active = local

zur Laufkonfiguration unter VM - Optionen.

Weder Arbeit. Ich sehe die INFO-Nachricht beim Start immer wieder und sage: Kein aktiver Profilsatz, der auf Standardprofile zurückgreift: default

Wenn ich meine App von der Windows-Befehlszeile aus mit ausführe 

gradle bootRun

aber ich habe zuerst die Umgebungsvariable gesetzt 

set SPRING_PROFILES_ACTIVE=local

Dann funktioniert alles.

Meine Frage lautet also: Wie aktiviere ich mein lokales Spring Boot-Profil, wenn Sie bootRun von IntelliJ ausführen?

61
dleerob

Ich habe in Edit-Konfigurationen gegangen ...

Ich habe -Dspring.profiles.active=test zu VM Options hinzugefügt und diese Konfiguration dann erneut ausgeführt. Es hat perfekt funktioniert.

79
Thom

Wenn Sie tatsächlich Spring Boot Run-Konfigurationen verwenden (die derzeit nur in der Ultimate Edition unterstützt werden), können Sie die Profile unter "Active Profiles" einfach vorkonfigurieren.

 enter image description here

54

Am Ende habe ich folgendes zu meinem build.gradle hinzugefügt:

bootRun {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "local"
}

test {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test"
}

Wenn Sie nun bootRun von IntelliJ ausführen, wird standardmäßig das "lokale" Profil verwendet.

In unseren anderen Umgebungen setzen wir einfach die Umgebungsvariable 'SPRING_PROFILES_ACTIVE' in Tomcat.

Ich habe dies aus einem Kommentar hier gefunden: https://github.com/spring-projects/spring-boot/pull/592

6
dleerob

Eine wahrscheinliche Ursache könnte darin bestehen, dass Sie die Befehlszeilenparameter nicht an die Hauptmethode der Anwendung übergeben. Ich habe vor einigen Wochen denselben Fehler gemacht.

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

Ich verwende die Intellij Community Edition . Gehen Sie zu "Run/Debug Configurations"> Registerkarte Runner> Umgebungsvariablen> Klicken Sie auf die Schaltfläche "...". Fügen Sie Folgendes hinzu: SPRING_PROFILES_ACTIVE = local

spring.profiles.active

2
Ryan Wibawa

Fügen Sie diesen Befehl in Ihr build.gradle ein

 enter image description here

So konfigurieren Sie diese Form:

 enter image description here

1
emerson moura

Spring Boot scheint die Lesart der Optionen für VM geändert zu haben. Versuchen Sie es einmal, wenn Sie eine Anwendung in Intellij starten und ein Profil aktivieren möchten:

1. Ändern Sie die Optionen für VM

Öffnen Sie "Konfiguration bearbeiten" unter "Ausführen" und fügen Sie unter "VM-Optionen" Folgendes hinzu: -Dspring.profiles.active=local

Es funktioniert eigentlich mit einem meiner Projekte mit Spring Boot v2.0.3.RELEASE und Spring v5.0.7.RELEASE, nicht jedoch mit einem anderen Projekt mit Spring Boot v2.1.1.RELEASE und Spring v5.1.3.RELEASE.

Beim Laufen mit Maven oder JAR wurde dies auch erwähnt:

mvn spring-boot:run -Drun.profiles=dev

oder 

Java -jar -Dspring.profiles.active=dev XXX.jar

(Siehe hier: wie man Spring Boot-Profile verwendet )

2. Übergeben von JVM-Argumenten

Es wird irgendwo erwähnt, dass Spring die Art und Weise des Startens des Anwendungsprozesses ändert, wenn Sie einige JVM-Optionen angeben. Er forciert einen anderen Prozess und wird das Argument, das er erhalten hat, nicht übergeben, sodass dies nicht funktioniert. Die einzige Möglichkeit, Argumente zu übergeben, ist:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="..."

Dies ist wieder für Maven . https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html

3. Einstellung env var

Was für mich beim zweiten Projekt funktioniert, war das Setzen der Umgebungsvariable, wie oben in einer Antwort erwähnt: "Konfiguration bearbeiten" - "Umgebungsvariable", und:

spring.profiles.active=local
0
WesternGun

Für Spring Boot 2.1.0 und höher können Sie verwenden

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

0
Mr. K.

Versuche dies. Bearbeiten Sie Ihre build.gradle-Datei wie folgt.

ext { profile = project.hasProperty('profile') ? project['profile'] : 'local' }
0
sudoz

Replace your profile name with BE

Sie können auf die oben beschriebene Weise versuchen, ein Profil zu aktivieren

0
Amrit Malla