如何从多个项目访问公共资源文件

FazoM:

在我的一个项目中,我有存储的资源/src/test/resources(典型的maven目录结构)。这些资源由项目中存储的实用程序类使用。

实用程序类本身正在其他项目中使用(其他项目取决于该项目)。我将这样访问资源:

final InputStream inputStreamDobs = 
    ClassLoader.class.getResourceAsStream("/dbunit/clear_db.xml");

但是由于我是在不同的项目中使用它,所以路径是不正确的-相对于current project that is being built/tested,而不是实用程序类和资源所在的路径

有没有想到如何解决这个问题?

我需要避免使用绝对路径-希望有一种方法来定义实用程序类的相对路径。

我也不想在多个项目中复制资源。干杯。

编辑:为了提供上下文,我在集成测试(清除整个数据库模式)之后需要清除XML文件中表的定义。集成测试位于多个项目中,但是它们的清除脚本和资源文件相同,并且位于公共父项目中。

编辑2:

额外的问题:我想访问tables.dtd需要从多个其他项目的XML文件访问的公共DTD文件(简称为)。(它将位于公共父项目中)。

目前,我已经将其复制到多个项目中,并使用指令从XML引用它:

<!DOCTYPE dataset SYSTEM "src/test/resources/dbunit/dobs.dtd">

如何将其指向不同项目中的文件?

Drunix:

你写了

...但是由于我在不同的项目中使用它,所以路径是不正确的-它与正在构建/测试的当前项目有关,而不是与实用程序类和资源有关的项目...

相对路径在这里不是问题。您在示例中使用了绝对路径,但是即使您使用相对路径,也将引用包或目录结构。getResourceAsStream只要classpath是正确的,就会选择它们。真正的问题是您要引用另一个项目中的测试资源但是测试资源和类未包含在项目工件中,因此无法从包含此资源和类的模块中进行访问。如果您需要这些资源来在多个项目中进行测试,建议您创建一个包含这些资源的新项目(例如“ projectxyz-testresources”),src/main/resources并在相关时将其添加为具有范围“ test”的依赖项。

编辑添加:

如果您不想为测试资源使用单独的项目,则可以使用目标创建一个包含测试类和资源的测试罐,jar:test-jar并将其作为测试依赖项。您可能需要在pom中配置jar插件以在常规构建中执行此目标。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章