是否可以在gradle中着色/隔离所有实现依赖项?

时间:2019-05-23 10:03:43

标签: java gradle javac

上下文

在编译和运行使用很多依赖项的Java程序时,您可以轻松地遇到通常由传递性依赖项冲突引起的所谓的“类路径地狱”。使用Java的Gradle依赖机制,可以通过在编译时(link)至少不泄漏传递依赖来在某种程度上减轻这种情况。

据我所知,当遇到与传递依赖项冲突的问题时,几乎有三种方法:

  • 找到另一个库(版本),希望它能工作
  • 遮盖传递依赖
  • (新)对模块使用layering

问题

由于我们同时具有定义实现依赖项和对其进行着色的机制(即在运行时更改其名称空间),因此您是否知道是否存在自动对所有实现依赖项进行着色的方法?阴影图案可以使用artifactId,但无论如何都必须是唯一的。

作为替代方案,有没有一种自动的方式来使用新的“模块分层”系统?

背景

我过去已经问过如何避免成功编译和运行时加载错误SO Question之间的冲突。我还检查了如何解决与disabling transitive dependenciesshading in fat jar的依赖冲突。我还看到Java模块系统无意解决link,但是拼图项目的分层可能link

0 个答案:

没有答案