【发布时间】:2016-11-01 03:27:28
【问题描述】:
我目前正在试验 maven 模块结构。 目前我有以下结构:
A -> B -> C
其中 A 依赖于 B,B 依赖于 C,A、B、C 是独立的 maven 模块。
B 是否有可能以某种方式掩盖其对 C 的依赖,以使 A 不能直接调用公共函数或从 C 实例化对象?
【问题讨论】:
标签: java maven module dependencies
我目前正在试验 maven 模块结构。 目前我有以下结构:
A -> B -> C
其中 A 依赖于 B,B 依赖于 C,A、B、C 是独立的 maven 模块。
B 是否有可能以某种方式掩盖其对 C 的依赖,以使 A 不能直接调用公共函数或从 C 实例化对象?
【问题讨论】:
标签: java maven module dependencies
您可以将 B 对 C 的依赖标记为<optional>true</optional>。这将阻止 Maven 传递地解决这种依赖关系,因此 A 不会传递地依赖于 C。这意味着当构建 A 时,它的类路径中根本不会有 C,除非 A 定义了对 C 的显式依赖。
当然,如果 A 定义了对 C 的显式依赖,Maven 会添加它。 Maven 是一个构建工具,而不是一个可以阻止 A 显式访问 C 的安全框架。
另外,<scope>provided<scope> 有不同的含义,但在传递依赖方面的作用类似。
【讨论】: