使用spring-boot时,spring-boot命令行属性是否可用:运行?

Liz*_*izH 9 spring maven spring-boot

简短的问题:

如何配置环境配置文件,甚至只是spring-boot的另一个配置文件名:run?

长版:

是的,我读过这份文件.http://docs.spring.io/spring-boot/docs/current/reference/html/index.html

我在src/main/resources/application-mysql.properties中有我的应用程序配置设置:

# Specify the DBMS
spring.jpa.database = MYSQL

# Other Mysql config properties

spring.jpa.hibernate.ddl-auto=create
Run Code Online (Sandbox Code Playgroud)

有一个相应的application-hsql.properties,它包含Hsql的同一组配置选项.没有application.poperties

有一个相应的import.sql:

insert into users(name, email) values ('User One',  'one@email.com')
insert into users(name, email) values ('Two User', 'two@email.com')
Run Code Online (Sandbox Code Playgroud)

单元测试仅用于检查存储库中是否存在这些用户.

我相信,无论何时使用MySql配置运行测试,这些行都会添加到users表中.当使用hsql运行测试时,mysql db应该不受影响.我在运行之间手动删除用户表,因为我想手动查看它何时存在.

1)如果我运行mvn test,测试使用配置的db:

mvn -Dspring.profiles.active=mysql clean test 
Run Code Online (Sandbox Code Playgroud)

生成mysql数据库行和

mvn -Dspring.profiles.active=hsql clean test 
Run Code Online (Sandbox Code Playgroud)

才不是.

2)如果我创建一个包,然后运行生成的jar文件,我可以指定一个配置文件名:

java -jar -Dspring.profiles.active=mysql  ./target/app.jar
Run Code Online (Sandbox Code Playgroud)

3)如果我使用spring-boot:run运行,则只发现application.properties中的属性(在此测试场景中不存在).

mvn -Dspring.profiles.active=mysql clean spring-boot:run
Run Code Online (Sandbox Code Playgroud)

spring-boot:run在启动时的运行方式与运行单元测试和踢开jar有什么不同?db config就是一个例子,但理论上我希望能够在本地运行应用程序而不是生产配置时指定一组开发配置.

kry*_*ger 14

Maven spring-boot插件会激活一个新进程,因此您需要通过jvmArguments向其发送任何额外参数,例如:

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