私はこの答えがあなたを混乱させないよう希望します。
Jarsは、可変構成を格納するのに適していません。 jarファイルには、デフォルトの設定だけを置くことができます。 jarファイルは書き込み可能ではないため、プログラムがjarファイル内にある場合、そのプログラムを更新するために設定を上書きすることはできません。
ユーザー固有の設定が必要なアプリの場合は、設定を$USER_HOME/.myapp
ディレクトリに保存する傾向があります。データベースやjava preferences APIではなくコンフィギュレーションにファイルシステムを使用する利点は、標準のテキストエディタを使用してconfigを簡単に表示および編集できることです。アプリケーションの設定のためのホームディレクトリを決定する
サンプルコード:
String configHome = System.getProperty("myapp.home",
System.getProperty("user.home") + "/.myapp"
);
あなたはjarファイルのうち、デフォルトの設定のためのリソースにアクセスし、ファイルシステム上のファイルにコピーできます。その後、ユーザーはファイルシステム上のファイルを手動で編集してアプリケーションを構成することができました。または、ユーザーがファイル内の情報を変更するために作成するカスタムUIを提供することもできます。
このアプローチの例はこのOsiamHomeクラスにあります。これは、Javaアプリケーション(サーバーアプリケーションですが、一般的な原則をクライアントアプリケーションに使用することができます)を設定するのに最適な方法の1つです。 。 osiamリファレンスはSpringアプリケーションであるため、Springが提供するコンフィグレーションサポート(特にPathMatchingResourcePatternResolver)の恩恵を受けるために、jarを再帰的に検索してアプリケーションのすべてのデフォルトコンフィグレーションリソースを見つけるのに役立ちます。
しかし、おそらく、Springベースのアプローチで提供される追加の機能は必要ありません。代わりに、デフォルトの設定ですべてのファイルのコードにリストを保持し、ソースツリーの/resources/config
ディレクトリにファイルを配置することができます。ビルドプロセスは、デプロイメントのためにデフォルトの設定をjarファイルにコピーします。アプリケーションが実行されるときに、ファイルシステムのconfigディレクトリが存在しない場合、アプリケーションはjarファイルからデフォルトのconfigリソースを読み込み、ファイルシステム上のファイルに設定リソースをコピーできます。設定ファイルは必要に応じて変更して変更することができます。
アプリケーションジャーの外の構成を管理するためのあなたが持っているいくつかの他のオプションにされています
- 、データベース内の場所の構成情報をOR
- は、Java preferences API OR
- パッケージングシステムを使用してを使用してください例えばrpmまたは(おそらく)javapackagerツール、またはjavafx maven pluginであり、これはデフォルト構成をネイティブの展開パッケージにバンドルします。ネイティブOSデプロイメントソフトウェアは、設定を抽出して指定した場所にコピーすることができます。通常、この場所はOSの標準の構成場所となります(Linuxではシステムワイド構成の場合は
/etc/myapp
、ユーザー固有の構成の場合は$USER_HOME/.myapp
など)。
これ以降、どのように 'configPath'を使用していますか? – Tunaki
'src \ main \ resources \ config'を検討しましたか? – vikingsteve
Tunaki:configPathを使用して、設定をプロパティでロード(および保存)します。 vikingsteve:下記のコメントをご覧ください。 – Ronon