【发布时间】:2015-08-26 09:37:00
【问题描述】:
我正在尝试构建一个与 HBase 通信的 Dropwizard (Jersey) REST 端点。尽管这是我仅有的两个顶级依赖项,但这两个依赖项都加载了许多冲突的传递依赖项。这种冲突的一个简单例子是 Google 的 Guava:
- HBase 客户端指定版本 11
- Dropwizard 指定 18
Dropwizard 不适用于版本 11,HBase 不适用于版本 18。
我检查了 Maven shade 插件文档,但它似乎不允许您重新定位在依赖 jar 中找到的类。所以我不知道如何解决这个问题,除非将这两个组件分成单独的 JVM。
【问题讨论】:
-
您能否详细说明为什么每个都不能使用升级/降级版本的番石榴运行?
-
冲突有很多,但最让我头疼的是
com.google.common.base.Stopwatch,在版本 17 和 18 之间,API 发生了变化,没有任何形式的弃用 -
没有机会 fork HBase 和升级依赖?
-
我发现这篇文章非常有用elastic.co/blog/to-shade-or-not-to-shade。想在这里发帖很久了
标签: java maven gradle maven-shade-plugin