Java模块依赖关系的解释

Java模块依赖关系的解释,java,dependencies,Java,Dependencies,我相信这可能是一个重复的问题,但我试图理解为什么 A、 B和C是普通的旧Java模块——A和B是库,C是应用程序 如果B依赖于A C依赖于B 为什么我必须在C的依赖项中同时包含A和B 我不是真的在寻求建议-我在项目中只有5个模块,所以这没什么大不了的。我只是好奇为什么会出现这种情况(或者我可能忽略了一些明显的事情)。 < P>有两种依赖关系要考虑——项目依赖性和运行时依赖性。 运行时依赖关系是最简单的:为了运行C,A和B都需要JAR,因为没有A,B将无法运行。Java模块类似于其他编译语言中

我相信这可能是一个重复的问题,但我试图理解为什么

  • A、 B和C是普通的旧Java模块——A和B是库,C是应用程序

  • 如果B依赖于A

  • C依赖于B

  • 为什么我必须在C的依赖项中同时包含A和B


我不是真的在寻求建议-我在项目中只有5个模块,所以这没什么大不了的。我只是好奇为什么会出现这种情况(或者我可能忽略了一些明显的事情)。

< P>有两种依赖关系要考虑——项目依赖性和运行时依赖性。 运行时依赖关系是最简单的:为了运行C,A和B都需要JAR,因为没有A,B将无法运行。Java模块类似于其他编译语言中的动态库(与静态库相反)。编译B时,编译器不会复制A的类以包含在B中:它假定A、B的依赖项在运行时可用

项目依赖关系不那么简单:严格地说,您不需要在C的依赖关系列表中包含A。大多数开发环境都会为您找出可传递的依赖关系,因此当A发生更改时,B将重新编译,然后C将重新编译以响应B的重新编译