Faz*_*zoM 15 java resources dbunit maven
在我的一个项目中,我有资源存储在/src/test/resources(典型的maven目录结构)中.这些资源正由项目中存储的实用程序类使用.
实用程序类本身正在从其他项目中使用(其他项目依赖于此项目).我会像这样访问资源:
final InputStream inputStreamDobs =
ClassLoader.class.getResourceAsStream("/dbunit/clear_db.xml");
Run Code Online (Sandbox Code Playgroud)
但是因为我在不同的项目中使用它的路径不正确 - 它是相对的current project that is being built/tested,而不是实用程序类和资源所在的那个.
有人想过如何处理这个问题?
我需要避免使用绝对路径 - 希望有一种方法来定义实用程序类的相对路径.
我也不想在多个项目上复制资源.干杯.
编辑: 为了给出一个上下文,我有一个XML文件中的表的定义,需要在集成测试后清除(清除整个数据库模式).集成测试位于多个项目中,但清晰的脚本和资源文件对于所有这些都是相同的,并且位于公共父项目中.
EDIT2:
奖金问题:我想访问tables.dtd需要从多个其他项目的XML文件访问的常见DTD文件(让我们称之为).(它将坐在共同的父项目中).
目前我将它复制到多个项目中,我从XML使用指令引用它:
<!DOCTYPE dataset SYSTEM "src/test/resources/dbunit/dobs.dtd">
Run Code Online (Sandbox Code Playgroud)
如何将其指向不同项目中的文件?
你写了
...但是因为我从不同的项目中使用它的路径不正确 - 它与正在构建/测试的当前项目相关,而不是实用程序类和资源所在的项目...
相对路径不是问题.在示例中使用绝对路径,但即使您使用相对路径,也会引用包或目录结构. getResourceAsStream只要类路径正确,它就会接收它们.真正的问题是你指的是另一个项目中的测试资源.但是测试资源和类不包含在项目工件中,因此无法从包含此作为依赖项的模块访问它们.如果您需要这些资源用于多个项目中的测试,我建议您使用这些资源创建一个新项目(比如说"projectxyz-testresources"),src/main/resources并将其作为依赖项添加到相关范围"test".
编辑添加:
如果您不想为测试资源使用单独的项目,可以使用目标创建包含测试类和资源的测试jar,jar:test-jar并将其作为测试依赖项包含在内.您可能希望在pom中配置jar插件以在常规构建上执行此目标.
| 归档时间: |
|
| 查看次数: |
10043 次 |
| 最近记录: |