我开发了一个将在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
,然后以某种方式将其首先注入第二个。还有其他想法吗?
答案 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>