2016-08-28 3 views
0

WindowsとMac OSで使用するアプリケーションを開発します。私はそこにH2データベースを使用します。私はAppDataディレクトリに自分のdbファイルを保存したい。このように:SpringとMavenのクロスプラットフォームAppDataディレクトリ

application.properties:

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

APP_DATA${user.home}/AppData/Roaming/のWindowsため${user.home}/Library/Application Supportマックでなければなりません。

私はこの方法では、WindowsとMacの両方のための2つのMavenのプロファイルを持つ(私はとにかくそれらを個別に発送させていただきます)とフィルタリングをプラグインMavenのリソースを使用する方法について考えた:

spring.datasource.url=jdbc:h2:${user.home}${suffix} 

問題は、私がすることはできませんフィルタのみsuffixを入力し、user.homeは変更しないでください。結果的に私はC:\\Users\\Denis/AppData/Roaming/KeywordsをMavenビルド後に取得しますが、私はuser.homeをユーザのマシン上で実行する必要があります。

今のところ私はsuffixを別のファイルに移動し、application.propertiesをリソースプラグインから除外し、次に何らかの形で最初に2番目のものにintregateするという解決策しか見ません。他のアイデア?

答えて

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> 
関連する問題