【问题标题】:Protobuf/guava dependency issueProtobuf/guava 依赖问题
【发布时间】:2020-01-07 22:36:28
【问题描述】:

我正在做一个使用 protobuf 的项目。这是一个java 8项目,所以我想利用toImmutableList等番石榴各种收集器。

dependencies {
    implementation 'com.google.guava:guava:21.0'
    implementation 'com.google.protobuf:protobuf-java:3.11.1'
}

我遇到了一个问题,即 protobuf 依赖于 android 的 guava 版本 28.1,它缺少 toImmutableX 收集器。因为 28.1 高于 21.0,所以编译时使用的是 android 版本。

排除来自 protobuf 的 gradle 依赖的最佳途径是什么?

【问题讨论】:

    标签: gradle protocol-buffers guava


    【解决方案1】:

    如果您将自己的 Guava 依赖项更新到 28.1-jre(或者您也可以直接升级到 28.2-jre,最新版本),这应该会为您提供收集器和任何 protobuf 需要的最近添加的功能。

    【讨论】:

    • guava 21.0 依赖项已经在运行时提供,所以我想避免在第三个(?)版本的番石榴中产生阴影。
    • 啊,我明白了。我担心 protobuf 可能会使用 21.0 之后添加的功能。 (我不知道是否有,但鉴于 21.0 已经 3 岁了,我不会感到惊讶。)如果 21.0 是运行时存在的版本,那么您的选择可能是 shade Guava 和protobuf 或将 protobuf(以及您正在使用的其他库)降级到仅需要 Guava 21.0 的版本。
    • 现在我已经走了排除路线,并排除了来自 protobuf 的番石榴被用作传递依赖项。无论如何我都在 protobuf 中进行着色,所以应该没问题。
    猜你喜欢
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    相关资源
    最近更新 更多