以依赖树为例,如 A-->B-->C。假设在 A 中编译 B。 如果 C 在 B 中具有compile作用域,则编译 A 时,C 将被包含在 A 的类路径中。 如果 C 在 B 中具有provided作用域,则编译 A 时,除非 A 声明 C(例如作为compile依赖项),否则 C 将不会包含在 A 的类路径中。 如果 C 在 B 中具有runtime作用域,则在专用容器中运行 A 时,C 是否可用于 A 的类路径?
假设A->B表示"编译",B 将成为 A 的运行时依赖项。这在下面的表格中有解释: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html 它基本上总结了整个传递性/范围问题。