2016-07-14 24 views
0

Hy、 Mavenプロジェクトで、このJavaコードを実行するたびにリソースフォルダ(例:C:\ Users \ Raul \ workspace \ Serial \ src \ test \ resources)を取得します。Mavenリソースフォルダ

System.out.println(getClass().getResource("").getPath()); 

それは私にこのパスを返します:C:/ユーザー/ラウル/ワークスペース/シリアル/ターゲット/テストクラス/

私はMavenを使用した最後の時間を私から何も変更せずにその方法を働きました。 Thxを事前に入力してください。

+0

リソースは(必然的に)ファイルシステムのエントリではありません。それらをそのまま使用しないでください。 –

+0

プログラムはそこからファイルを作成、変更、削除する必要があります。 –

+0

本当にそうすべきではありません。開発環境とランタイム環境を混在させないでください。 –

答えて

1

典型的なセットアップでは、Mavenはリソースをtarget/classes(またはtarget/test-classes)ディレクトリにコピーします。また、target/classes(またはtarget/test-classes)ディレクトリがクラスパスに追加されます。

ファイルがsrc/test/resources/foo.txtの場合は、getResource("/foo.txt")を使用してファイルにアクセスします。

一般的に言えば、コードでソースフォルダを参照してリソースにアクセスする必要はありません。リソースは複数の場所に置かれ、リソースを「フィルタリング」する(トークンをビルドプロパティ値で置き換える)のはかなり一般的です。フィルタリングの場合、処理されたリソースファイルがソースディレクトリに存在しないようにする必要があります。

+0

thx。 jarファイル(通常のユーザーでは表示されません)の内部からファイルを作成して読み込む必要がある場合は、どうすればこのファイルを作成できますか? –

+0

@RaulVasi最近私はそれを試したことはありませんが、クラスパス内の任意のjarファイルは 'getResource()'を使って利用できると信じています。 bar.jarにfoo.txtというトップレベルのファイルが含まれている場合、ファイルがjarかクラスパス上に直接あるかに関わらず、 'getResource("/foo.txt ")と言うことができます。 – Rob

関連する問題