2011-06-29 6 views
2

Mavenプロジェクトの立場から見ると、そこに保存されたファイルは特別な方法でアクセスする必要がありますか、または「リソース」が別のディレクトリである他のファイルとして扱われるべきですか?Mavenリソースについて

このディレクトリを特別なものにするにはどうすればよいですか? 「リソース」とは、ソースファイルではなく、プログラムによって使用されるものです。

ここで少し混乱しています。明快にしてください

答えて

4

resourcesディレクトリ内のすべてのファイルは、コンパイルされずにjar(またはwar)に追加されます。通常、設定ファイルやその他の非ソースリソースのようなものはこのディレクトリに置かれますが、ファイルが ".java"で終わらずソースディレクトリに置かれ、結果のアーティファクトは同じになります。

resourcesディレクトリのファイルにアクセスするには、ClassLoader.getResourceまたはgetResourceAsStreamメソッドを使用します。

Mavenを使用する際のもう1つの特徴は、プロジェクトをビルドする際にMavenに置き換えられるプロパティトークンを含めることができることです。例えば:

この行は、リソースファイルに

artifactName=${project.build.finalName} 

のようなものに置き換えられます:Mavenの内で利用可能なプロパティのどれがあなたのリソースに置き換えることができ

artifactName=my-project-1.0.0 

+0

ええと...この場合、getResource()は実際のフォルダ名とは関係がありません。「リソース」ですか? – JAM

+0

@mac、フォルダ名自体は問題ではありません。まず、デフォルトのリソースディレクトリを必要なものに変更することができます。また、jarがビルドされた後に、そのディレクトリからファイルにアクセスします。それらのファイルはすべて、jarファイルのルートに相対的に配置されるため、コードが実際に実行されると、 'resources'ディレクトリは存在しなくなります。最後に、 'getResource'を使ってjarファイル内のファイルを取得することができます。したがって、src/main/javaにあるjavaパッケージの中にxmlファイルを置くと、ClassLoaderリソースメソッドを使ってそれにアクセスできます。 –

2

これは単なるスタンダードです。デフォルトでは、resourcesディレクトリーの内容は.classファイルと同じターゲット・ディレクトリーにコピーされ、jarとしてパッケージ化されている場合はjarのルートにコピーされます。

リソースのエンコード方法を指定することもできます。そうしないと、構築したシステムのエンコーディングを効果的に保存できます。これは移植性がなく、Mavenが警告するものです。

関連する問題