根据maven resolution of transitive scope ,
如果 A 是我们的项目,它直接依赖于 X,其范围是相对于 A 提供的。
Maven 告诉 X 与范围运行时的任何依赖关系(直接或传递)都将被解析为范围 provided
w.r.t A。
设 Y 是 X 的直接依赖项,其范围运行时
w.r.t 到 X。
A --> X(范围 = 提供) --> Y(范围 = 运行时)
现在,Y 将解析为 A 的提供范围
。
观察: A 的运行时类路径
中永远不需要 Y。只有 A 的测试类路径
中才需要它。事实上,如果您将 Y 作为 X 的传递依赖项,仅将其范围保持为运行时,它仍然不会在 A 的运行时类路径中使用。它将仅在测试类路径
中使用。
问题:那么,我们不应该说 -
如果 A 是我们的项目,它直接依赖于 X,其作用域是相对于 A 提供的,那么 X 与作用域运行时的任何依赖关系(直接或传递)都将解析为作用域 test
w.r.t A?
最佳答案
人们肯定会争辩说,这些依赖项可以更好地转换为“测试”范围。
但我怀疑这方面是否会有任何改变。
关于java - Maven 中提供的和运行时的传递范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56793310/