有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

提供范围的java Maven可传递依赖项

enter image description here

根据Maven完整参考中的图像,当直接依赖项范围为“compile”且可传递依赖项的范围为“provided”时,可传递依赖项将被忽略

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

基本上,这就是为什么在编译直接依赖项时编译可传递依赖项作用域而不是运行时,为什么在提供可传递依赖项作用域时不考虑相同的规则


共 (1) 个答案

  1. # 1 楼答案

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

    2. provided不是可传递的。我的解释如下:provided意味着容器/平台为您提供了所需的工件。什么是provided什么不是容器依赖的。如果不知道库的依赖项将在哪个容器上运行,那么将其标记为provided就没有什么意义。因此,根据“可部署单元”的级别对依赖项进行“排序”更有意义,例如战争或ear