gpt4 book ai didi

java - IntelliJ & Gradle : test module/sourceSet can't see main resources

转载 作者:行者123 更新时间:2023-11-30 05:29:11 26 4
gpt4 key购买 nike

这是我的项目每个模块的简化结构:

src
|- main
|- java
<My classes>
|- resources
config.properties
|- test
|- java
MainTest
|- resources

我最近将 IntelliJ 更新到版本 2019.2。由于 Jetbrains 删除了“取消选中为每个源集创建单独的模块”(请参阅​​ this post ),当我导入 Gradle 项目时,我最终会得到一个具有两个子模块的模块: main测试

所以,在 Intellij 项目结构中,我有这个:

主子模块

main module structure

测试子模块

test module structure

在某些类(class)中,我以这种方式加载 config.properties 文件:

InputStream inputStream = MyClass.class.getClassLoader().getResourceAsStream("config.properties");

但是当我在 IntelliJ 中运行 MainTest.main() 时(它有时会调用上面的代码),生成的 InputStream 为 null。

我猜 test 模块类路径不包含 main 资源文件夹...

我该如何解决这个问题?

当我可以选中“取消选中为每个源集创建单独的模块”复选框时,我只有一个模块,一个类路径,并且我的生活变得更轻松......有没有一种方法,也许可以使用 build.gradle 文件中的 Gradle 配置来强制执行一个唯一的模块/源集?

最佳答案

IntelliJ 2019.2 默认将所有构建和运行任务委托(delegate)给 Gradle,因此您如何在 IntelliJ 中构建项目并不重要。您还可以尝试使用 gradle test 在命令行上运行测试,看看是否遇到相同的问题(您应该这样做)。

“test”运行时类路径确实包含“test”和“main”文件夹中的资源文件夹。所以这也不应该成为问题。

在您显示的主模块的屏幕截图中,资源文件夹中没有 config.properties 文件。您是否将其放在 META-INF 子文件夹中?如果它实际上位于资源文件夹的根目录中,请尝试在路径中使用斜杠 (/) 引用它,例如:

MyClass.class.getClassLoader().getResourceAsStream("/config.properties")
^^^

关于java - IntelliJ & Gradle : test module/sourceSet can't see main resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57922772/

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