7

我面临一个问题,即没有选择测试/资源,而是选择了 jar 的主要/资源

场景就像:Myproject src/test/resources--- 有 config.xml w 这应该是 abc.jar 需要的,这是 Myproject 中的一个依赖项。

为 Myproject 运行测试用例时,它加载 abc.jar 的 config.xml 而不是 Myproject 测试/资源。- 我需要知道 maven 选择资源的顺序。- 或者我尝试是不可能的。

谢谢。

4

2 回答 2

13

来自target/tests-classes(默认情况下)的文件包含在测试类路径的开头。因此,在运行测试时,两者的资源src/main/resourcessrc/test/resources在类路径上,但后者优先于前者。换句话说,如果你有config.xmlinsrc/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
  • 项目罐子
  • 依赖项(包括具有测试范围的依赖项)
于 2010-05-04T11:35:16.737 回答
0

我的项目遇到了类似的问题。所以我在 ProjectA 中有 TestClassA,它从 ProjectB 调用 ClassB。ClassB 使用 src/test/resources 中的文件。由于某种原因,该文件未被使用。我发现 ProjectA 在其 src/test/resources 中有一个同名文件。
所以总而言之,即使 ClassB 在 ProjectB 中,它也在使用 ProjectA 的 src/test/resources,因为那是测试起源的项目。

于 2013-06-19T20:01:31.777 回答