2011-10-18 46 views
1

我有一个maven模块BaseProject与src/main/java中的java类。有些类正在从src/main/resource文件夹中加载xml文件。 这工作相当不错。如何从依赖项maven模块加载资源

我有第二个Maven项目TestProject *使用BaseProject作为依赖项。 TestProject是我的JUnit测试项目,所以只有src/test/java中有类。 如果我使用一些从BaseProject加载的资源的类,我得到一个空指针,因为找不到资源文件。 我假设我的TestProject中的src/main/resource文件夹在这种情况下被认为是寻找资源文件的地方。

那么,我如何加载资源文件在BaseProject中的方式,它总是会看起来在它自己的src/main /资源文件夹中?

这里是我如何做到这一点的时刻:

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我希望你实际上是吝啬的资源,而不仅仅是文件。只需将它谷歌,例如http://stackoverflow.com/questions/3923129/get-a-list-of-resources-from-classpath-directory – kan

相关问题