具有提供范围的Maven传递依赖性

时间:2018-02-19 22:11:55

标签: java maven

enter image description here

根据Maven完整引用的图像,当直接依赖范围是'compile'并且传递依赖的范围是'提供'时,传递依赖被忽略。

我的问题是,如果一个直接依赖类从这个传递依赖扩展我的项目的编译将失败,因为在编译时'javac'将寻找由传递依赖直接依赖扩展的类,并且不会找到它在编译时类路径中,maven忽略它。

基本上,当直接依赖是编译时,传递依赖范围是编译而不是运行时的原因,为什么在提供传递依赖范围时不考虑相同的规则?

1 个答案:

答案 0 :(得分:0)

  1. compile需要传递,你继承的例子就是其中一个原因。当然,您通常不需要所有传递编译依赖项进行编译,但比抱歉更安全。

  2. provided不具有传递性。我的解释如下:provided表示容器/平台为您提供所需的工件。什么是provided以及什么不依赖于容器。如果你不知道它将运行的容器,那么将库的依赖关系标记为provided是没有意义的。因此,在“可部署单元”的级别上“排序”依赖性更有意义,例如,战争或耳朵。