使用Spring和Maven的跨平台AppData目录

时间:2016-08-28 19:15:55

标签: java spring maven cross-platform

我开发了一个将在Windows和Mac OS上使用的应用程序。我在那里使用H2 db。我想将我的db文件存储在AppData目录中。像这样:

application.properties:

spring.datasource.url=jdbc:h2:${APP_DATA}/data/keywords
对于 Windows

APP_DATA应为${user.home}/AppData/Roaming/,对于 Mac ,<{1}}应为${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,然后以某种方式将其首先注入第二个。还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

我需要的是使用反斜杠${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>