Maven中提供和运行时的传递范围

时间:2019-06-27 14:31:12

标签: java maven maven-3

根据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

1 个答案:

答案 0 :(得分:1)

可以肯定地说,这些依赖关系可以更好地转换为“测试”范围。

但是我怀疑这会不会有任何改变。