2016-10-02 7 views
2

Ich möchte bestimmte sicherheitsrelevante Eigenschaften in meine Spring Boot-Anwendung übergeben, die ich über Gradle während der Entwicklung über Kommandozeilen- und/oder extern gesetzte Systemeigenschaften starte. Ich kann diese Dinge nicht in Dinge wie das Script build.gradle schreiben, da sie in die Quellcodeverwaltung übernommen werden und dann öffentlich verfügbar sind.Systemeigenschaften in Spring Boot von Gradle übergeben

Ich kann keine der Lösungen finden, die ich gefunden habe, um diese Werte einer Anwendung verfügbar zu machen, die Gradle mit Gradle 2.4.4 ausführt.

mehr Lösungen wie folgt aussehen, wobei die Systemeigenschaften in der bootRun Aufgabe festgelegt sind:

bootRun { 
    systemProperties System.properties 
} 

Dies scheint vollständig den Standard bootRun Aufgabe überschreibt und bricht Frühling Stiefel automatische Hauptklasse Erkennung.

Irgendwo anders wurde dies vorgeschlagen:

bootRun { 
    run {systemProperties System.properties} 
} 

Dies ist nicht die normale Konfiguration enthebt, aber die Eigenschaften innerhalb des Laufes Verschlusses sind in der bootRun Aufgabe nicht zur Verfügung.

Dies alles geschieht, wenn ich Gradle mit Intellij starte.

Wenn ich Gradle von der Kommandozeile zu starten und in einer Eigenschaft Weise zu passieren versuchen, zum Beispiel:

gradle -Dspring.email.password=123 bootRun 

Das Anwesen ist nirgendwo festgelegt, unabhängig von der Konfiguration. Das Ändern der Reihenfolge der Argumente hat keine Auswirkungen.

Antwort

1

Führen Sie die JVM args als gradle Eigenschaft und leiten sie an die Anwendung unter Verwendung der folgenden Konfiguration:

bootRun { 
    if (project.hasProperty('jvmArgs')) { 
     jvmArgs project.jvmArgs.split('\\s+') 
    } 
} 

zu jvmArgs gelten laufen: ./gradlew bootrun -PjvmArgs="-Dspring.profiles.active=myprofile -Dspring.email.password=secret"

Verwandte Themen