Maven:什么是“运行时”范围的目的?

可能重复:
了解编译与运行时依赖关系

我明白,“运行时”范围的依赖关系将在运行时可用,而不是在编译时。 但我不明白你为什么要这样做! 为什么不简单地使用“编译”范围?

文档并没有真正的帮助。 任何想法?

运行时对于unit testing和运行时所需的依赖性是有用的,而不是在编译时。 这通常可以是dynamic加载的代码,如JDBC驱动程序,这些程序代码中不直接引用。

将运行时依赖关系设置为确保代码没有意外的依赖关系,并保持依赖关系不被传递。 例如,如果模块A对库X具有运行时依赖关系,而模块B依赖于模块A,则它不会inheritance对库X的依赖关系。使用“提供”或“编译” 导致B依赖于X 。