2

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

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

  • 如果 B 依赖于 A

  • 和 C 取决于 B

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

我真的不是在寻求建议——我在项目中只有 5 个模块,所以没什么大不了的。我只是好奇为什么会这样(或者我可能遗漏了一些明显的东西)。

4

1 回答 1

1

有两种依赖项需要考虑——项目依赖项和运行时依赖项。

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

项目依赖不那么直接:严格来说,你不需要C 的依赖列表中包含 A。大多数开发环境会为你找出传递依赖,所以当 A 发生变化时,B 会重新编译,然后 C 会重新编译响应 B 的重新编译。

于 2013-05-17T01:49:14.073 回答