[英]Cross-Platform AppData dir with Spring and Maven
我开发了将在Windows和Mac OS上使用的应用程序。 我在那里使用H2 db。 我想将数据库文件存储在AppData目录中。 像这样:
application.properties:
spring.datasource.url=jdbc:h2:${APP_DATA}/data/keywords
对于Windows , APP_DATA
应该为${user.home}/AppData/Roaming/
,对于Mac ,应${user.home}/Library/Application Support
。
我考虑过要同时为Windows和Mac使用两个Maven配置文件(无论如何,我都会单独提供它们),并以这种方式使用maven资源插件过滤:
spring.datasource.url=jdbc:h2:${user.home}${suffix}
问题是,我不能仅过滤suffix
而不会保留user.home
。 现在结果是我在Maven构建之后得到C:\\\\Users\\\\Denis/AppData/Roaming/Keywords
,这是不正确的,因为我需要user.home
在用户的计算机上继续。
目前,我仅看到将suffix
移动到单独文件,然后从资源插件中排除application.properties
解决方案,然后以某种方式将其优先考虑为第二种。 还有其他想法吗?
我需要做的是用反斜杠\\
来转义${user.home}
:
application.properties
APP_DATA=\${user.home}${app.data.dir}
pom.xml
<properties>
<app.data.dir>/AppData/Roaming/</app.data.dir>
</properties>
对我而言,仅此而已,但可能还需要添加以下内容( docs ):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<escapeString>\</escapeString>
</configuration>
</plugin>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.