Impostazione del profilo attivo e della posizione di configurazione dalla riga di comando in spring boot


Ho un'applicazione di avvio a molla.

Ho tre profili nella mia applicazione-> sviluppo, staging e produzione. Quindi ho 3 file

  1. sviluppo di applicazioni.mlg
  2. staging dell'applicazione.mlg
  3. applicazione-produzione.mlg

La mia applicazione .yml risiede all'interno di src/main/resources. Ho impostato il profilo attivo nell'applicazione.yml come:

spring:
  profiles.active: development

Gli altri 3 file di configurazione specifici del profilo sono presenti nella cartella C:\config.

Sto usando il plugin gradle per eclipse. Quando provo a fare un " bootRun ", sto impostando gli argomenti della riga di comando nella mia configurazione gradle in eclipse come

 -Dspring.profiles.active=staging -Dspring.config.location=C:\Config

Tuttavia, la proprietà della riga di comando non viene riflessa e il mio profilo attivo viene sempre impostato come sviluppo(che è quello che ho menzionato nelle applicazioni.file yml). Inoltre C:\Config la cartella non viene cercata per i file di configurazione specifici del profilo.

Penso che mi manchi qualcosa qui. Ho cercato di capirlo negli ultimi 2 giorni. Ma senza fortuna. Apprezzerei davvero qualsiasi aiuto.

Author: O-OF-N, 2015-06-25

8 answers

Ci sono due modi diversi per aggiungere/sovrascrivere le proprietà spring sulla riga di comando.

Opzione 1: Proprietà del sistema Java (argomenti VM)

È importante che i parametri-D siano prima dell'applicazione.vaso altrimenti non vengono riconosciuti.

java -jar -Dspring.profiles.active=prod application.jar


Opzione 2: Argomenti del programma

java -jar application.jar --spring.profiles.active=prod --spring.config.location=c:\config
 132
Author: RenRen, 2017-11-08 15:12:37

Ho dovuto aggiungere questo:

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"
}

E ora bootRun raccoglie il profilo e le posizioni di configurazione.

Grazie mille @jst per il puntatore.

 13
Author: O-OF-N, 2015-06-25 18:12:38
-Dspring.profiles.active=staging -Dspring.config.location=C:\Config

Non è corretto.

Dovrebbe essere:

--spring.profiles.active=staging --spring.config.location=C:\Config
 9
Author: Michael Yin, 2016-01-26 00:43:31

È possibile utilizzare la seguente riga di comando:

java -jar -Dspring.profiles.active=[yourProfileName] target/[yourJar].jar
 7
Author: Rollen Holt, 2016-06-17 02:31:03

Penso che il tuo problema sia probabilmente legato alla tua primavera.config.posizione che non termina il percorso con"/".

Citare i documenti

Se primavera.config.la posizione contiene directory (al contrario dei file) che dovrebbero terminare in / (e verranno aggiunte con i nomi generati da spring.config.name prima di essere caricato).

Http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files

 3
Author: jst, 2015-06-25 00:17:35

Quando si imposta il profilo tramite il plugin Maven è necessario farlo tramite run.jvmArguments

mvn spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=production"

Con l'opzione di debug:

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -Dspring.profiles.active=jpa"

Ho visto questo viaggio un sacco di gente..spero che aiuti

 2
Author: JamesC, 2017-01-31 15:06:03

C'è un altro modo impostando la variabile OS, SPRING_PROFILES_ACTIVE.

Per esempio:

SPRING_PROFILES_ACTIVE=dev gradle clean bootRun

Riferimento: Come impostare i profili Primavera attivi

 2
Author: Rothin Sen, 2017-05-16 11:23:36

La risposta di Michael Yin è corretta ma sembra essere necessaria una spiegazione migliore!

Molti di voi hanno detto che -D è il modo corretto per specificare i parametri JVM e hai assolutamente ragione. Ma Michael ha anche ragione come menzionato nella documentazione Spring Boot Profiles .

Ciò che non è chiaro nella documentazione, è che tipo di parametro è: --spring.profiles.active non è un parametro JVM standard, quindi se vuoi usarlo nel tuo IDE compila i campi corretti (cioè programma argomenti)

 1
Author: Eric Taix, 2018-05-01 06:26:48