【发布时间】:2020-08-15 14:11:24
【问题描述】:
在 Maven 中是否有办法让库模块 A 指定对模块 B 的内部依赖,但对 A 的客户端不可见这一事实?
也就是说,如果 C 声明了对 A 的依赖,则 C 不能使用 B 中的任何代码而不声明它自己对 B 的依赖。
动机
我想要这个的原因是我希望能够在我喜欢的时候移除对 B 的依赖,而不会影响客户端。
提供和可选的区别
这与 provided 和 optional 依赖项不同。内部依赖与它是由应用容器提供,还是只是有时可用的依赖无关。
这个问题是关于一种依赖关系,它总是与模块 A 一起分布,但对客户端不可见。
Gradle 中的类似功能
这与 Gradle 中 implementation 和 api 依赖关系的区别相同。
相关问题
这似乎在问同样的事情。但是发布者接受了可选依赖项作为解决方案。所以在实践中,这个问题是关于不同的东西:
【问题讨论】:
-
我认为 Maven 中没有这样的东西。我认为这是因为 Maven 只关心获取构建所需的依赖关系,而不关心模块的一般模块化和可见性。如果您使用 Maven,我认为您必须为此使用其他工具,例如 Java 模块或 OSGi。无论如何,我发布这个可能是为了帮助其他困惑的人比我更快地得出这个结论
标签: maven