小编典典

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

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

有一个对应的application-hsql.properties,其中包含与Hsql相同的配置选项集。没有应用程序。

有一个对应的import.sql:

insert into users(name, email) values ('User One',  'one@email.com')
insert into users(name, email) values ('Two User', 'two@email.com')

单元测试仅用于检查存储库中这些用户的存在。

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

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

mvn -Dspring.profiles.active=mysql clean test

产生mysql数据库行并

mvn -Dspring.profiles.active=hsql clean test

才不是。

2)如果制作一个程序包,然后运行生成的jar文件,则可以指定一个配置文件名:

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

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

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

spring-boot:run与启动单元测试和启动jar相比,在启动方面有什么不同?db
config是一个示例,但从理论上讲,我希望能够在本地运行应用程序与生产配置时指定一组dev config。


阅读 431

收藏
2020-05-30

共1个答案

小编典典

Maven spring- boot插件派生了一个新进程,因此您需要通过jvmArguments向它发送任何其他参数,例如:

mvn spring-boot:运行-Drun.jvmArguments =“-Dspring.profiles.active = mysql”

2020-05-30