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

标签 spring maven spring-boot

简短的问题:

如何配置环境配置文件,甚至只是配置文件的替代名称
spring-boot:运行吗?

长版:

是的,我阅读了文档。 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。

最佳答案

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

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

关于spring - 使用spring-boot :run?时spring-boot命令行属性是否可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27302450/

相关文章:

java - Maven 依赖树不同于 M2E 的依赖层次结构

java - 在 Wildfly 中重新部署 war 时出现 ClassCastingException

java - 如何确保在使用 spring 的数据库更新语句中没有竞争条件

java - 为什么无法导入属性文件

maven - 在 mac 中找不到 mvn/mvnDebug

android - Gradle不下载链接到 Artifact 的依赖项

java - Tomcat关闭时Spring Boot中Executor服务的关闭

java - 多个 Spring @RequestMapping header

java - 发送消息时出现 SocketException : (Connection Reset, AmqpIOException : java. io.IOException)

java - 具有动态方案的 Jpa