【发布时间】:2018-01-16 03:25:14
【问题描述】:
在 Spring Boot Maven 项目中,src/main/resources 和 src/test/resources 中分别有一个 application.yml 文件。
在运行测试用例时,似乎测试只会使用src/test/resources 目录中的文件。它不会加载两个文件并覆盖src/main/resources/application.yml 中的属性。
如果src/test/resources目录下没有文件,则使用src/main/resources目录下的文件。
spring boot如何加载这两个目录下的application.yml文件?有什么规则?或者这个动作取决于什么?
我在哪里可以在线查找有关此内容的更多信息?
└───spring-boot-main-test-application-yaml
├───pom.xml
└───src
├───main
│ ├───java
│ ├───resources
│ ├───application.yml
│
├───test
├───java
├───resources
└─── application.yml
src/main/resource/application.yml
name: Phil(main)
sample:
name: Andy(main)
src/test/resource/application.yml
name: Phil(test)
sample:
name: Andy(test)
案例1:src/main/resource/application.yml 存在
输出:Hello Phil(main),Andy(main)
case2:src/main/resource/application.yml 和 src/test/resource/application.yml 都存在
输出:Hello Phil(test),Andy(test)
case3:src/main/resource/application.yml 和 src/test/resource/application.yml 都存在并在 src/test/resource/application.yml 中注释掉 name
输出:Error - java.lang.IllegalArgumentException: Could not resolve placeholder 'name' in value "${name}"
这个测试似乎没有从src/main/resource/application.yml 读取属性,所以它找不到name 属性。
【问题讨论】:
标签: java spring-boot maven-3