Java maven中提供的和运行时的可传递范围
根据, 如果A是我们的项目,它直接依赖于X,其范围是关于A提供的 Maven告诉我们,X与scope runtime之间的任何依赖关系(直接的或可传递的)都将解析为scopeJava maven中提供的和运行时的可传递范围,java,maven,maven-3,Java,Maven,Maven 3,根据, 如果A是我们的项目,它直接依赖于X,其范围是关于A提供的 Maven告诉我们,X与scope runtime之间的任何依赖关系(直接的或可传递的)都将解析为scope,前提是w.r.t.A 设Y是X的直接依赖项,作用域为runtimew.r.t到X A-->X(范围=已提供)-->Y(范围=运行时) 现在,Y将解析为提供的范围w.r.t到A 观察:Y在A的运行时类路径中永远不需要。它只在A的测试类路径中需要。事实上,如果您将Y作为X的传递依赖项,保持其作用域仅为运行时,那么它永远不会在A
,前提是
w.r.t.A
设Y是X的直接依赖项,作用域为runtime
w.r.t到X
A-->X(范围=已提供)-->Y(范围=运行时)
现在,Y将解析为提供的范围
w.r.t到A
观察:Y在A的运行时类路径
中永远不需要。它只在A的测试类路径
中需要。事实上,如果您将Y作为X的传递依赖项,保持其作用域仅为运行时,那么它永远不会在A的运行时类路径
中使用。它将仅用于测试类路径
问题:那么,我们不应该说-
如果A是我们的项目,它对X有直接依赖,而X的作用域是相对于A提供的,那么X与作用域运行时的任何依赖(直接的或可传递的)将被解析为作用域
test
w.r.t A?我们可以肯定地说,这些依赖可以更好地转换为“test”作用域
但我怀疑这方面会有任何改变