我面临一个问题,即没有选择测试/资源,而是选择了 jar 的主要/资源
场景就像:Myproject src/test/resources--- 有 config.xml w 这应该是 abc.jar 需要的,这是 Myproject 中的一个依赖项。
为 Myproject 运行测试用例时,它加载 abc.jar 的 config.xml 而不是 Myproject 测试/资源。- 我需要知道 maven 选择资源的顺序。- 或者我尝试是不可能的。
谢谢。
来自target/tests-classes
(默认情况下)的文件包含在测试类路径的开头。因此,在运行测试时,两者的资源src/main/resources
都src/test/resources
在类路径上,但后者优先于前者。换句话说,如果你有config.xml
insrc/main/resources
和 in src/test/resouces
:
src/main/resources/config.xml
将被打包在最终的人工制品中,但src/test/resources/config.xml
将在运行测试时使用如果这不是您遇到的情况,那么其他地方一定有错误。
如果您想说服自己可以运行mvn -X test
,这将打印Test Classpath。你会看到这个类路径是由(按这个顺序)组成的:
target/test-classes
target/classes
我的项目遇到了类似的问题。所以我在 ProjectA 中有 TestClassA,它从 ProjectB 调用 ClassB。ClassB 使用 src/test/resources 中的文件。由于某种原因,该文件未被使用。我发现 ProjectA 在其 src/test/resources 中有一个同名文件。
所以总而言之,即使 ClassB 在 ProjectB 中,它也在使用 ProjectA 的 src/test/resources,因为那是测试起源的项目。