根据Maven完整引用的图像,当直接依赖范围是'compile'并且传递依赖的范围是'提供'时,传递依赖被忽略。
我的问题是,如果一个直接依赖类从这个传递依赖扩展我的项目的编译将失败,因为在编译时'javac'将寻找由传递依赖直接依赖扩展的类,并且不会找到它在编译时类路径中,maven忽略它。
基本上,当直接依赖是编译时,传递依赖范围是编译而不是运行时的原因,为什么在提供传递依赖范围时不考虑相同的规则?
答案 0 :(得分:0)
compile
需要传递,你继承的例子就是其中一个原因。当然,您通常不需要所有传递编译依赖项进行编译,但比抱歉更安全。
provided
不具有传递性。我的解释如下:provided
表示容器/平台为您提供所需的工件。什么是provided
以及什么不依赖于容器。如果你不知道它将运行的容器,那么将库的依赖关系标记为provided
是没有意义的。因此,在“可部署单元”的级别上“排序”依赖性更有意义,例如,战争或耳朵。