我有一个Spring Boot项目,使用gradle,有三个Spring配置文件:
因此我有四个应用程序* .yml文件:
这些环境都运行良好。问题是当我将代码部署到heroku时,heroku运行'gradle build'(反过来运行'gradle test'),而heroku没有设置环境变量的选项。因此我无法设置有效的配置文件。因此,当它运行测试时,它使用的是application.yml而没有application-test.yml中的覆盖。因此测试显然失败了。
到目前为止,我唯一的解决方案是将所有application-test.yml默认值放入application.yml,然后在其他配置文件中再次覆盖它们,但这显然远非理想。
有办法:
答案 0 :(得分:11)
认为joshiste的回答是正确的。
无论如何,我猜你也可以像这样设置SPRING_PROFILES_ACTIVE
环境变量:
$ heroku config:set SPRING_PROFILES_ACTIVE=test
Adding config vars and restarting myapp... done, v12
SPRING_PROFILES_ACTIVE: test
$ heroku config
SPRING_PROFILES_ACTIVE: test
$ heroku config:get SPRING_PROFILES_ACTIVE
test
$ heroku config:unset SPRING_PROFILES_ACTIVE
Unsetting SPRING_PROFILES_ACTIVE and restarting myapp... done, v13
答案 1 :(得分:1)
如果您使用@WebIntegrationTest
或@IntegrationTest
,可以使用注释将配置文件设置为属性值。
看起来像这样:
@RunWith(SpringJUnit4ClassRunner.class)
@WebIntegrationTest({"spring.profiles.active=test"})
public class MyWebIntegrationTests {
// ...
}