2011-10-18 11 views
1

私はmavenモジュールを持っていますBaseProject src/main/javaにjavaクラスがあります。いくつかのクラスは、src/main/resourceフォルダからXMLファイルをロードしています。 それはかなりうまくいく。依存性Mavenモジュールからリソースをロードする方法

私は、依存関係としてBaseProjectを使用している2番目のMavenプロジェクトのTestProject *を持っています。 TestProjectは私のJUnitテストプロジェクトなので、src/test/javaにのみクラスがあります。 私はリソースファイルを見つけることができないので、私はnullpointerを取得するリソースをロードするBaseProjectからクラスのいくつかを使用する場合。 TestProjectのsrc/main/resourceフォルダは、この状況ではリソースファイルを探す場所と見なされます。

どのように私はBaseProjectのリソースファイルを、それ自身のsrc/main/resourceフォルダ内に常に見えるように読み込みますか?

そして、ここでは、私は、現時点でそれを行う方法です。

InputStream inputStream = MyBaseClass.class 
      .getResourceAsStream(
      "foo/bar/hello.xml"); 
String content = new Scanner(inputStream, "UTF-8").useDelimiter("\\Z").next(); 
+0

これは動作するはずです。メインプロジェクト(.m2ローカルリポジトリにインストールされている)のjarにXMLファイルが含まれていることを確認します。 –

答えて

1

getResourceAsStream("path")は比較的現在のクラスからのリソースを検索します。 foo.barがフルパッケージ名の場合、絶対パスを使用する必要があります。getResourceAsStream("/foo/bar/hello.xml")

+0

Doh、レイヤ8の問題。 Mavenリソースプラグインが見つかりませんでした。今それは動作します。ありがとうございました – martin

+0

ディレクトリの下にファイルをリストすることはできますか?たとえば、MyClass.class.getResourceAsStream( "/ foo/bar")のようなものです。list()? –

+0

@VijayRatnagiri私はあなたが実際にはリソースだけでなく、ファイルであることを願っています。 googleなどhttp://stackoverflow.com/questions/3923129/get-a-list-of-resources-from-classpath-directory – kan

関連する問題