Java 如何在test和main之间共享资源?

Java 如何在test和main之间共享资源?,java,maven,java-8,maven-3,Java,Maven,Java 8,Maven 3,我正在开发一个web应用程序 这是我的项目结构 src/ ├── main │   ├── java │   ├── resources │   └── webapp └── test ├── java └── resources 在我的测试中,我想从java中的类调用一个方法,该类使用参考资料中的文件 所以我想知道如何在main和test之间共享我的资源 我不想每次编辑文件时都将其复制到测试资源 我尝试了SymLink,但出现错误“无法复制到测试类,因为文件不存在。”` 这就

我正在开发一个web应用程序

这是我的项目结构

src/
├── main
│   ├── java
│   ├── resources
│   └── webapp
└── test
    ├── java
    └── resources
在我的测试中,我想从
java
中的类调用一个方法,该类使用
参考资料中的文件

所以我想知道如何在
main
test
之间共享我的资源

我不想每次编辑文件时都将其复制到
测试资源

我尝试了SymLink,但出现错误“无法复制到
测试类,因为文件不存在。”`

这就是我在重要情况下访问资源的方式

class.getResourceAsStream("/data.yml");
编辑


显然,Maven在默认情况下确实在main和test之间共享资源,但这里的情况并非如此


当我构建时,我可以从
target/classes
下的
main
查看我的资源,但在使用Maven的
target/test classes
中没有任何内容,默认情况下,
src/main/resources
下的文件与
src/test/resources
共享。只要把它们放在那里,就可以从
test
文件夹中访问它们。

test
中可以看到
main
中存在的文件

因此,如果测试和主目录都需要,您可以将资源放在主目录树上


如果测试只需要这些资源,请将它们放在测试子树上。

您是在谈论以
结尾的文件。properties
?@JasonZ否,这是一个yaml文件,但它有什么关系?我已经编辑了我的问题,以显示我如何在类中访问它们。我的资源已经存在于main中,但是当我构建它时,它不会被复制到
测试类
。我的资源已经存在于main中,但是当我构建它时,它不会被复制到
测试类
。嘿,你认为你可以看看我的编辑吗?我不确定我错过了什么。我到处找都找不到。它们在不同的类装入器中。这就是为什么您应该使用
MyClass.class.getClassLoader().getResourceAsStream(“data.yml”)
而不是您编写的内容。这些资源不在测试类路径中。它应该出现在测试类中,但它不在那里。它们不应该出现。区别在于类路径,而不是文件夹。如果您直接使用文件,那么是的,您将遇到问题。如果你像我写的那样使用资源,就不会。