2014-12-04 13 views
8

La domanda breve:Le proprietà della riga di comando spring-boot sono disponibili quando si utilizza spring-boot: run?

Come è possibile configurare i profili di ambiente o anche solo un nome di file di configurazione alternativo per spring-boot: eseguire?

La versione lunga:

Sì, ho letto il doc. http://docs.spring.io/spring-boot/docs/current/reference/html/index.html

Ho le mie impostazioni di configurazione di applicazione in src/main/resources/application-mysql.properties:

# Specify the DBMS 
spring.jpa.database = MYSQL 

# Other Mysql config properties 

spring.jpa.hibernate.ddl-auto=create 

v'è un corrispondente application-hsql.properties, che contiene lo stesso insieme di opzioni di configurazione per HSQL. ci sono application.poperties

C'è una corrispondente import.sql:

insert into users(name, email) values ('User One', '[email protected]') 
insert into users(name, email) values ('Two User', '[email protected]') 

L'unità esistono prove solo per verificare la presenza di questi utenti nel repository.

Credo che sia vero che ogni volta che il test viene eseguito utilizzando la configurazione MySql, tali righe vengono aggiunte alla tabella utenti. Quando il test viene eseguito con hsql, mysql db non deve essere modificato. Sto facendo cadere manualmente la tabella degli utenti tra le esecuzioni, perché voglio vedere manualmente quando esiste.

1) Se corro prova mvn, i test usano il db configurato:

mvn -Dspring.profiles.active=mysql clean test 

Produce mysql righe del database e

mvn -Dspring.profiles.active=hsql clean test 

non lo fa.

2) Se faccio un pacchetto, e quindi eseguire il file jar risultante, sono in grado di specificare un nome di file di configurazione:

java -jar -Dspring.profiles.active=mysql ./target/app.jar 

3) Se corro con molla-boot: corsa, solo proprietà in application.properties (che non esiste in questo scenario di test) vengono scoperte.

mvn -Dspring.profiles.active=mysql clean spring-boot:run 

Cosa fa il boot a molla: eseguire in modo diverso il lancio rispetto ai test di unità in esecuzione e il lancio del vaso? Il db config è un esempio, ma in teoria mi piacerebbe essere in grado di specificare un insieme di configurazioni di dev quando l'applicazione viene eseguita localmente rispetto a una configurazione di produzione.

risposta

12

I Maven spring-boot forche plugin di un nuovo processo quindi è necessario inviare alcun parametro in più per via jvmArguments, ad esempio:

mvn primavera-boot: eseguire -Drun.jvmArguments = "- Dspring. profiles.active = mysql"

0

il plugin consente di specificare il profilo attivo (s) direttamente (forse non era il caso 3 anno fa?):

mvn spring-boot:run -Drun.profiles=mysql 
Problemi correlati