【问题标题】:Internal Maven dependencies内部 Maven 依赖项
【发布时间】:2020-08-15 14:11:24
【问题描述】:

在 Maven 中是否有办法让库模块 A 指定对模块 B 的内部依赖,但对 A 的客户端不可见这一事实?

也就是说,如果 C 声明了对 A 的依赖,则 C 不能使用 B 中的任何代码而不声明它自己对 B 的依赖。

动机

我想要这个的原因是我希望能够在我喜欢的时候移除对 B 的依赖,而不会影响客户端。

提供和可选的区别

这与 providedoptional 依赖项不同。内部依赖与它是由应用容器提供,还是只是有时可用的依赖无关。

这个问题是关于一种依赖关系,它总是与模块 A 一起分布,但对客户端不可见。

Gradle 中的类似功能

这与 Gradle 中 implementationapi 依赖关系的区别相同。

相关问题

这似乎在问同样的事情。但是发布者接受了可选依赖项作为解决方案。所以在实践中,这个问题是关于不同的东西:

Maven private dependencies

【问题讨论】:

  • 我认为 Maven 中没有这样的东西。我认为这是因为 Maven 只关心获取构建所需的依赖关系,而不关心模块的一般模块化和可见性。如果您使用 Maven,我认为您必须为此使用其他工具,例如 Java 模块或 OSGi。无论如何,我发布这个可能是为了帮助其他困惑的人比我更快地得出这个结论

标签: maven


【解决方案1】:

AFAIK,在 A 级别上没有解决方案。

可以在 C 中使用 dependency:analyzedependency:analyze-only 来确定是否使用了传递依赖项而不声明它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 2014-02-10
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 2018-10-20
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多