根据maven resolution of transitive scope
如果A是我们的项目,它直接依赖于X,而X的范围是相对于A的。
Maven告诉我们,具有范围运行时的X的任何依赖项(直接或传递)都将解析为w.r.t A的范围provided
。
让Y是X的直接依赖项,范围为runtime
,与X相对。
A --> X(scope = provided) --> Y(scope = runtime)
现在,Y将解析为provided scope
,而不是A。
观察:在A的runtime classpath
中将不再需要Y。仅在A的test classpath
中将需要Y。实际上,如果将Y作为传递依存关系X的X仅将其范围保留为运行时,但仍永远不会在A的runtime classpath
中使用它。只会在test classpath
中使用。
问题:所以,我们不应该说-
如果A是我们的项目,它直接依赖于X,而X的范围是相对于A提供的,那么X的任何具有范围运行时的依赖关系(直接或可传递)都将解析为A的范围test
?
答案 0 :(得分:1)
可以肯定地说,这些依赖关系可以更好地转换为“测试”范围。
但是我怀疑这会不会有任何改变。