【问题标题】:Conflict in Maven Dependencies not getting resolvedMaven 依赖项中的冲突未得到解决
【发布时间】:2017-04-20 06:39:42
【问题描述】:

我正在使用用于 Google 语音和 Google 自然语言处理的 Google 云 API。我使用的版本如下:

google-cloud-speech:0.13.0-alpha

google-cloud-language:0.9.4-alpha

它们都使用 google-gax api 作为内部依赖项。语音 api 使用 gax 版本 0.10.0,语言 api 使用 0.1.4。 在 pom 中,我具有提供的依赖范围。所以出于这个原因,我在服务器的 lib 文件夹中提供了 jars。

但问题在于 gax api。问题是:

当我提供 0.10.0 版本的 gax 时,语音 api 可以工作,但语言 api 不能工作。

如果提供 gax 0.1.4 版本,则语言 api 有效,但语音 api 无效。

如果两个版本都提供,那么只有语音 api 有效。

有解决问题的建议吗?我已经尝试了所有方法,即清理项目、更新 maven、重新部署项目、删除所有 maven 依赖项并重建。但没有解决问题。

【问题讨论】:

  • 没有办法 - 找到兼容版本的库。您也许可以编写一个“垫片”以使语言与 gax 0.10.0 一起使用。 (我撒谎,自定义类加载器或 OSGI 可以工作 - 但这超出了我认为的这个问题的范围)。
  • 这是您使用 alpha 版本所支付的价格。在我看来,这两个库非常适合在 same 版本中使用(例如 0.8.0.
  • 除了使用自定义类加载器或 osgi 并且不更改您正在使用的版本:提取 jar,反编译,将类型移动到相应的包(如 gax.v0_10_0 和 gax.v_0_1_4),重新导入类型,重新打包。我不会推荐它,但如果你真的必须这样做。我们做过一次,它奏效了,很痛苦,但它奏效了,...(还有一件事:在 Maven 中,您可以排除传递依赖,这可能会有所帮助)
  • @slowy..我已经尝试过类似的痛苦工作,但没有成功。

标签: java maven dependencies google-cloud-speech


【解决方案1】:

更改 google-cloud-language 效果很好。现在将语言版本更新为

google-cloud-language-0.13.0-alpha

一切顺利。原因是这个版本使用了 gax-0.10.0 从而解决了冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2011-11-02
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多