Spring Boot如何在application.properties配置项目根目录路径?
解决方案
方法一:直接在application.properties中使用JVM系统属性
Spring Boot可以直接引用JVM自带的系统属性user.dir,它代表当前进程的工作目录。只要你在项目根目录下启动应用或运行测试,这个值就会指向项目根目录,直接在application.properties里配置即可:
app.config=${user.dir}
注意:如果你的测试是在子模块目录单独运行,或者IDE的工作目录被手动修改过,user.dir可能会指向错误路径,这时候建议用下面的Gradle配置来兜底。
方法二:给Gradle测试任务配置JVM参数
既然你已经在bootRun里配置了参数,直接给test任务也加上相同配置,确保测试时能拿到正确的项目根目录:
test { jvmArgs = [ "-Dapp.config=${projectDir}" ] }
这样不管是启动应用还是运行测试,app.config都会被设置为项目根目录,完全满足外部组件的要求。
方法三:环境隔离的配置方式
如果需要区分开发、测试等不同环境的配置,可以创建application-test.properties专门用于测试环境,再结合Gradle传递自定义属性:
- 在
gradle.properties中定义项目根目录属性:
project.root.dir=${projectDir}
- 在
application-test.properties中引用这个属性:
app.config=${project.root.dir}
- 在Gradle的
test任务中把这个属性传递给JVM:
test { systemProperty 'project.root.dir', project.projectDir }
这种方式灵活性更高,适合多环境的复杂场景。
内容的提问来源于stack exchange,提问作者ViV
相关产品推荐
相关产品推荐

