Gradle 协议/番石榴依赖性问题

Gradle 协议/番石榴依赖性问题,gradle,protocol-buffers,guava,Gradle,Protocol Buffers,Guava,我正在做一个使用protobuf的项目。这是一个Java8项目,因此我想利用guavas的各种收集器,例如toImmutableList dependencies { implementation 'com.google.guava:guava:21.0' implementation 'com.google.protobuf:protobuf-java:3.11.1' } 我遇到了一个问题,protobuf依赖于android的guava版本28.1,它缺少toImmutab

我正在做一个使用protobuf的项目。这是一个Java8项目,因此我想利用guavas的各种收集器,例如
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版本


如果您将自己的Guava依赖项更新为28.1-jre(或者您也可以一直更新到28.2-jre,最新版本),那么最好的方法就是排除protobuf中的gradle依赖项吗,这将为您提供protobuf所需的收集器和任何最近添加的功能。

guava 21.0依赖项已经在运行时提供,因此我想避免在第三个版本的guava中使用阴影。啊,我明白了。我担心protobuf可能会使用在21.0之后添加的功能。(我不知道是否有,但考虑到21.0已经3年了,我不会感到惊讶。)如果21.0是运行时的版本,那么您的选择可能是您带来的Guava和protobuf,或者降级protobuf(可能还有您正在使用的其他库)从这个版本到一个只需要Guava 21.0的版本。现在,我已经走了排除路线,排除了protobuf中的Guava用作传递依赖项。反正我在protobuf做底纹,所以应该没问题。