java - 如何从 Maven 依赖项目中读取文件?

标签 java maven

我有两个 Maven 项目 A 和 B。B 依赖于 A。

在 A 中,我在 src/main/resources 文件夹中有一个文件 someFile.txt

public class SomeAClass
{
    public void someMethod()
    {
        final InputStream inputStream =
                Thread.currentThread()
                        .getContextClassLoader()
                        .getResourceAsStream("someFile.txt");
        final List<String> lines = IOUtils.readLines(inputStream);

        ...
    }
}

在 A 的测试中,这工作得很好。

现在假设我想在 B 中使用相同的代码,包括从 src/main/resources/someFile.txt 读取数据的能力。

现在,从项目 B 调用 SomeAClass.someMethod() 会导致 NullPointerException,我怀疑这是因为找不到 src/main/resources/someFile.txt

如何更改获取src/main/resources/someFile.txt的输入流的代码,以便它在 A 的单元测试和执行 B 时都可以工作(B 是 Spring Shell)基于控制台应用程序)?

最佳答案

您确定问题存在吗,因为我有类似的方法并且它工作正常。

这是我的第一次尝试

如果您在测试中使用 someFile.txt 作为资源(并且仅在此处,如果您在主项目中使用,请忽略该帖子),而不是使用 src/main/resources ,也许最好将该文件和其他文件放在 src/test/resources 中。

但是

如果您将这些测试文件放在 src/test/resources 中,请记住测试资源不包含在项目 Artifact 中,因此即使您在 pom 中包含依赖项,您也无法访问它们.

我做了什么(和你的一样)

创建新模块(测试资源)并将资源放入src/main/resources中。该模块用作我需要测试范围的项目中的依赖项。但我使用的是ClassPathResource。

    ClassPathResource resource = new ClassPathResource("the_file"); 
    resource.getInputStream()

关于java - 如何从 Maven 依赖项目中读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28711606/

相关文章:

java - .net 应用程序可以将 SSO token 传递给 java 应用程序以调用 Rally Rest 服务吗?

java - 在拥挤的图像中使用 opencv 确定文本区域

java - Maven 和 Java : The parameters 'mainClass' for goal org. codehaus.mojo :exec-maven-plugin:1. 2.1:java 丢失或无效

java - Eclipse的 "Export Runnable JAR"和Maven的 "package"命令

java - SonarQube 插件未找到 JaCoCo 结果

java - RxJava - Just vs From

java - Apache Spark : how to call UDF over dataset in Java?

java - 在 Jenkins 中运行 Maven 时出现 ClassNotFoundException

maven - 用于大量 jar 依赖项的 JBoss 模块 HOW TO

java - 如何在settings.xml中的配置文件中使用maven插件