存在于/ test / resources中的访问文件 - 类路径问题

时间:2018-05-16 08:27:05

标签: java spring maven

我正在开发一个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

请注意,此测试属性不会尝试加载任何证书。它就在那里,因为属性占位符可以在构建期间为属性找到一些值。

1 个答案:

答案 0 :(得分:0)

通过将integration-test阶段更改为process-test-resources来解决问题。

归功于Pascal Thivent的以下答案:

  

测试输出目录(target / test-classes)的内容位于类路径上,而不是src / test / resources。但是src / test / resources下的资源会被resources:testResources目标复制到测试输出目录(默认情况下绑定到process-test-resources阶段)。