从 SpringBoot 项目中的属性文件获取 Maven basedir

nep*_*tom 7 java junit maven properties-file spring-boot

我继承的Maven项目有一些JUnits中使用的资源文件。
这些文件在属性文件中被称为绝对路径。
我们假设 Maven 项目位于myproject主项目所在的 目录下pom.xml

一个config.properties文件有:

keystore.file=C:/Users/tom/myproject/web/src/test/resources/myfile.jks
Run Code Online (Sandbox Code Playgroud)

我想从 Maven 项目的相对路径引用该资源。
所以我一直在尝试类似的事情:

keystore.file=${project.basedir}/web/src/test/resources/myfile.jks
Run Code Online (Sandbox Code Playgroud)

我一直在阅读有关此问题中提到的资源过滤的内容。

该项目使用 SpringBoot,并且在运行 JUnit 时抱怨:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'project.basedir' in string value "${project.basedir}/web/src/test/resources/myfile.jks"
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)
Run Code Online (Sandbox Code Playgroud)

nep*_*tom 9

尝试不同的方法后,找到了解决我的问题的方法。
在 Spring Boot 中添加这一行application.properties

maven.basedir=@project.basedir@
Run Code Online (Sandbox Code Playgroud)

然后在config.properties

keystore.file=${maven.basedir}/web/src/test/resources/myfile.jks
Run Code Online (Sandbox Code Playgroud)

让它发挥作用。
检查:Spring Boot 使用 Maven 自动属性扩展。