有没有一种方法可以使用 Spring Boot 应用程序中的 application.properties 文件中的相对路径来查找文件资源,如下所示
spring.datasource.url=jdbc:hsqldb:file:${project.basedir}/db/init
原文由 Somasundaram Sekar 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有一种方法可以使用 Spring Boot 应用程序中的 application.properties 文件中的相对路径来查找文件资源,如下所示
spring.datasource.url=jdbc:hsqldb:file:${project.basedir}/db/init
原文由 Somasundaram Sekar 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答2.7k 阅读✓ 已解决
4 回答2.3k 阅读
2 回答1.4k 阅读
2 回答1.8k 阅读
1 回答855 阅读✓ 已解决
1 回答1.3k 阅读
@membersound 答案只是将硬编码路径分成两部分,而不是动态解析属性。我可以告诉您如何实现您正在寻找的东西,但您需要了解的是,当您将应用程序作为 jar 或 war 运行时,没有 —
project.basedir
。在本地工作空间之外,源代码结构不存在。如果您仍然想这样做进行测试,那是可行的,您需要操作
PropertySource
s。您最简单的选择如下:定义一个
ApplicationContextInitializer
,并在那里设置属性。类似于以下内容:看起来你正在使用 Boot,所以你可以在你的 — 中声明
context.initializer.classes=com.example.MyApplicationContextInitializer
application.properties
并且 Boot 将在启动时运行这个类。再次 警告:
这在本地工作区之外不起作用,因为它取决于源代码结构。
我在这里假设了一个 Gradle 项目结构
/build/classes/main
。如有必要,请根据您的构建工具进行调整。If
MyApplicationContextInitializer
is in thesrc/test/java
,pwd
will be<projectBasedir>/build/classes/test/
, not<projectBasedir>/build/classes/main/
.