为Spring Boot项目在pom.xml中指定主资源目录和测试资源目录的正确方法



我在我的小Spring Boot项目中有2个application.properties文件。一个保存在/src/main/resources/application.properties中,另一个保存在/src/test/resources/application.properties中。

main中的一些值不一定要出现在test中.

问题:当我清洁的时候->更新项目->在Spring Tool Suite IDE中安装maven,我得到多个

无法解析占位符'JMS_URL'中的值"${JMS_URL}"…等等

但是如果我删除application.propertiestest/src/test/resources/application.properties错误消失,我得到一个成功的maven安装构建。

我在网上搜索了一下,发现如果出现这个错误,你需要在pom.xml中指定资源目录。

像这样:

<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>

在我的情况下,添加<resource>块仍然没有解决我的问题,因为它只指定application.propertiessrc/main/resources中的目录,而不是为test指定目录

main中有2个application.properties文件,处理这种情况的正确方法是什么?测试和资源文件夹?

请指教。

谢谢。

处理这种情况的正确方法是以不同的方式命名测试属性文件,如application-test.properties。然后,您可以使用活动的test配置文件运行测试,或者显式指定

@TestPropertySource("classpath:application-test.properties")

在你的@SpringBootTest。这两种方法都可以使主application.propertiesapplication-test.properties的所有属性都处于活动状态,而后者的属性具有更高的优先级。

保留默认名称(application.properties)的测试属性文件完全覆盖了主属性文件,正如您可能已经注意到的那样。这样,测试属性文件必须具有与测试工作所需的主属性文件相同的所有必需属性。

最新更新