java - 从maven junit中的依赖jar加载文件

标签 java maven-2 junit

我正在使用 maven 2.1.0 并且有一个包含多个模块的项目。 示例模块:

  • spr-资源
  • spr-通用

spr-common 依赖于 spr-resources

spr-resources 只包含文件,没有类。

spr-common 有一个 junit,需要从 spr-resources jar 加载一个文件。

我用过:

String fileName = getClass().getResource("/jaskeyfile.3DES").getFile();
is = getClass().getClassLoader().getResourceAsStream(fileName);
is.read(data);

当我在 IntelliJ 中运行测试时这有效,但是当我进行 mvn 测试时,当我尝试对其执行 read() 时它失败并出现 NullPointerException。

为什么会这样?它应该可以很好地从依赖项中读取文件。

此外,spr-common 中的 pom.xml 对 spr-resources 有依赖性(尝试使用范围测试和不使用它)

编辑: 我也试过了

getClass().getClassLoader().getResourceAsStream("/jaskeyfile.3DES");

没有运气。

编辑2: 给定的文件存在于生成的 jar 中,所以我想它应该是可访问的。

最佳答案

仔细检查一切

这是一个要完成的列表:

  1. 文件 jaskeyfile.3DES 位于 spr-resources 模块内的 src/main/resources
  2. 您的本地存储库包含最新版本的 spr-resources-x.y.z-SNAPSHOT.jar(或者您已直接发布/版本控制)并且您肯定已经在其上使用了 mvn clean install
  3. spr-common 模块引用了 spr-resources-x.y.z.jar 的正确(命名)版本(编译范围将在测试和编译类路径中看到)

如果以上所有条件都为真,那么您的 getClass().getResourceAsStream("/jaskeyfile.3DES") 调用应该有效。我在我的项目中一直使用这种结构,所以你不会在这里要求月亮或任何东西。

关于java - 从maven junit中的依赖jar加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376032/

相关文章:

java - 启动一个Web容器,然后使用Cargo maven2插件部署 war

java - Mockito 在调用 getter 时设置字段

jsp - Maven,jsp文件依赖

maven-2 - 如何让maven使用系统代理设置

java - 通过观察者从线程使用列表中仅获取最新元素

Java:在不重新绘制的情况下调整组件大小?

maven - 运行 Junit 测试用例时 H2 数据库异常 "Caused by: org.h2.jdbc.JdbcSQLException: Sequence "SYSTEM_SEQUENCE_ *"not found;"

exception-handling - Selenium 2 和 JUnit4 : How to capture screenshot on exception?

java - Bukkit 插件多个权限不起作用

java - 从 RecyclerView 中删除项目会导致项目重复