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

时间:2012-09-04 23:05:05

标签: maven

  

可能重复:
  Understanding Compile- vs Run-time Dependencies

我理解在运行时而不是在编译时可以使用“运行时”作用域的依赖项。但我不明白为什么你会这么想!为什么不简单地使用“编译”范围?

docs并没有真正帮助。有什么想法吗?

1 个答案:

答案 0 :(得分:103)

运行时对于单元测试和运行时所需的依赖性非常有用,但在编译时则不行。这通常可以是动态加载的代码,例如JDBC驱动程序,它们不会在程序代码中直接引用。

将依赖项设置为运行时可确保不会对代码产生意外依赖关系,并且还会使依赖项不会传递。因此,例如,如果模块A对库X具有运行时依赖性,而模块B依赖于模块A,则它继承对库X的依赖性。使用“提供”或“编译” 导致B依赖X.