Maven 测试传递作用域

Maven test transitive scope

从 maven docs ,我们得到如果我们的项目 A 的直接依赖有范围 test 并且它的传递依赖有范围 test ,那么传递依赖不会被带到我们项目的测试类路径中A

[Project A] -> [Direct Dependency of A , say  X (scope test)] -> [Direct dependency of X , say Y (scope test)]

这让我想到了一个场景(可能与否,你决定)

如果我们项目 A 中某些测试的执行依赖于项目 X 中某些测试的代码,那么 Maven 将永远无法 运行 A 的测试,因为它永远不会在测试类路径中使用 Y。

遇到这种情况我们该怎么办?如果你说这样的场景不存在,为什么?

通常测试不包含在项目的 jar-file 中(否则这些不是测试而是项目的一部分)。

如果你想在另一个项目中重用测试代码,你应该创建一个包含测试类的单独的jar文件,并将它放在你的依赖列表中,范围为'test'。换句话说,如果你的项目A依赖于项目X,你应该明确指定,不管是不是测试代码。

有关它的更多信息,请查看:How to create a jar containing test classes