我确信这可能是一个重复的问题,但我正在努力理解为什么......
A,B和C是普通的旧Java模块 - A和B是库,C是应用程序。
如果B依赖于A
和C取决于B
为什么我必须在C的依赖项中同时包含A和B?
我真的不是在寻找建议 - 我在项目中只有5个模块,所以没什么大不了的。我只是好奇为什么会这样(或者我错过了一些明显的东西)。
答案 0 :(得分:1)
需要考虑两种依赖项 - 项目依赖项和运行时依赖项。
运行时依赖是最简单的:为了运行C,你需要A和B都有JAR,因为没有A,B就无法运行。 Java模块类似于其他编译语言中的动态库(与静态库相对)。编译B时,编译器不会将A的类的副本包含在B中:它假定A,B的依赖项在运行时可用。
项目依赖性不那么简单:严格来说,你不需要将包含在C的依赖项列表中。大多数开发环境都会为你找出传递依赖,所以当A更改时, B会重新编译,然后C会重新编译以响应B的重新编译。