繁体   English   中英

带有Spring和Maven的跨平台AppData目录

[英]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

对于WindowsAPP_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM