2016-07-06 11 views
0

javafxを最近mavenに移行しました。それは起動し、うまく動作しますが、configフォルダをどこに置くか、それがシェルに含まれていることをmavenに伝える方法はわかりません。私は、Mavenのプロジェクトを変換する前にプロジェクトをMavenに移行しました。どこにconfigフォルダを置くか

は、構造がこのように見えた:

| -src
| -lib
| -config

今sructureは次のようになります。

| -src /メイン/ javaの/ my.super.program
| -src /メイン/リソース/ my.super.program
| -lib
|私は

<resource>   
    <directory>config</directory> 
    <includes> 
     <include>*.xml</include> 
    </includes> 
    </resource> 

でそれを試みたが、それはしていない

を-config働いた。

main.javaで私は必要な設定ファイルを宣言します。例:

プライベートfinal String configPath = 'config/config.xml'; プライベート最終文字列accountPath = 'config/account.xml';

configフォルダを含めるにはどうすればいいですか?

+0

これ以降、どのように 'configPath'を使用していますか? – Tunaki

+0

'src \ main \ resources \ config'を検討しましたか? – vikingsteve

+0

Tunaki:configPathを使用して、設定をプロパティでロード(および保存)します。 vikingsteve:下記のコメントをご覧ください。 – Ronon

答えて

2

デフォルトでは、src/main/resources内に配置されているものはすべて、ビルドされたjarファイルに追加されます。あるいは、構成を保持する独自のMavenモジュールを作成することもできます。再びsrc/main/resourcesの下に配置する必要があります

設定を保持する専用モジュールを作成する場合は、それを前のモジュールの依存関係に追加する必要があります。コンパイル時間に依存することが望ましい(これは範囲です)。

+0

このフォルダをsrc/main/resourcesにコピーしました。コンテンツを含むフォルダがtarget/classes /の下に作成され、config.xmlが含まれています。しかし、私がjfxを実行すると、何も実行されずにtarget/jfx/app /にコピーされます。 – Ronon

+0

瓶を作る必要があります。 target/jfx/app /の下にあるものは何もありません。あなたのjarファイルのトップレベルになっているはずです。そして、あなたは瓶を始める。 –

+0

configフォルダは自動的にtarget/jfx/app /にコピーされますか? jfx:nativeを実行すると、configフォルダが見つからないため、起動時に必要になるため、これはうれしいことです。 – Ronon

-2

私はこの答えがあなたを混乱させないよう希望します。


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リソースを読み込み、ファイルシステム上のファイルに設定リソースをコピーできます。設定ファイルは必要に応じて変更して変更することができます。

アプリケーションジャーの外の構成を管理するためのあなたが持っているいくつかの他のオプションにされています

  1. 、データベース内の場所の構成情報をOR
  2. は、Java preferences API OR
  3. パッケージングシステムを使用してを使用してください例えばrpmまたは(おそらく)javapackagerツール、またはjavafx maven pluginであり、これはデフォルト構成をネイティブの展開パッケージにバンドルします。ネイティブOSデプロイメントソフトウェアは、設定を抽出して指定した場所にコピーすることができます。通常、この場所はOSの標準の構成場所となります(Linuxではシステムワイド構成の場合は/etc/myapp、ユーザー固有の構成の場合は$USER_HOME/.myappなど)。
+0

あなたは質問に答えるのではなく、それを別の質問に変えているので私は投票しています。彼の質問は、 "設定の青写真は何"ではなく、mavenプロジェクトの設定をどこに置くかです。 –

+0

おそらくあなたは正しいです、下の投票は大丈夫です、質問は私に異なって読まれました。 – jewelsea

関連する問題