我正在开发一个Spring多模块项目。其中一个子模块在/ test / resources / certs /下有一些文件,在/test/resources/test-ssl.properties下有一个属性文件。
───resources
│ test-ssl.properties
├───certs
│ test-keystore.p12
test-ssl.properties
有一个指向/certs/test-keystore.p12
文件的属性。
server.ssl.trust-store=/certs/test-keystore.p12
在子模块pom.xml中,我使用Maven插件test-jar,在父pom中,我已将此模块添加为依赖项。
使用此结构,父模块中存在的集成测试能够成功读取classpath:test-ssl.properties
,但无法解析其属性值。
Spring throws FileNotFoundException: \certs\test-keystore.p12
。我们可以做些什么来让Spring读取测试jar中的文件?
还尝试了以下模式,
server.ssl.trust-store=classpath:/certs/test-keystore.p12
server.ssl.trust-store=classpath:certs/test-keystore.p12
server.ssl.trust-store=classpath*:/certs/test-keystore.p12
请注意,此测试属性不会尝试加载任何证书。它就在那里,因为属性占位符可以在构建期间为属性找到一些值。
答案 0 :(得分:0)
通过将integration-test
阶段更改为process-test-resources
来解决问题。
归功于Pascal Thivent的以下答案:
测试输出目录(target / test-classes)的内容位于类路径上,而不是src / test / resources。但是src / test / resources下的资源会被resources:testResources目标复制到测试输出目录(默认情况下绑定到process-test-resources阶段)。