2017-06-21 5 views
1

と変数置換で解決私は私のコードはConfigFactory構文解析ファイルは、Javaシステムプロパティ

Configuration(ConfigFactory.parseFile(new File("/Users/TDong/files/app.conf")).resolve()) 

で、私のapp.confファイルが含まれていtypesafehub ConfigFactory fileParserの変数置換を使用しようとする課題

を持っています

path = ${java.home} 

すべての解決策では、変数代入でその変数を解決して、Javaシステムプロパティのホームを見つけることはできません。どのようにこの作品を作るためのアイデア

答えて

0

path = ${java.home}で同じ設定ファイル内のjava.homeの下の他の値を参照しています。値を上書きするためには、

java -jar -Djava.home=VALUE your_jar.jar

か、引数を渡すことができますいくつかのツールを使用してアプリケーションを実行する必要があります。

この値をSystem.setProperty()で設定する場合は、設定ファイルを読み込む前に設定する必要があります。

0

オーバーライド機能を利用するには、ConfigFactory.load()を使用するか、merging configurationConfig#withFallbackメソッドで処理する必要があります。実際これはどのように が動作するかです。

https://github.com/typesafehub/config#standard-behavior

便利な方法ConfigFactory.load()は以下 (最初に列挙されたより高い優先順位である)ロード: とクラスパスに

  • システムプロパティapplication.conf(すべてのリソースをこの名前を持つクラスパス上のすべてのリソース)
  • application.json( という名前のクラスパス上のすべてのリソース)
  • application.properties(この 名前のクラスパス上のすべてのリソース)
  • reference.conf(この名前のクラスパス上のすべてのリソース)を使用すると、デフォルトの動作に依存して渡すこと-Dconfig.file=/path/to/your.confを使用する必要がありますIMHO

ファイルをアプリケーションの引数として使用します。

非常によく書かれたドキュメントを読むことを強くお勧めします。