gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:32:25 25 4
gpt4 key购买 nike

我有两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com