为什么google-api-client依赖于guava-jdk5?

Fra*_*hey 5 java google-api maven google-api-java-client google-api-client

我在Maven依赖项中依赖于Guava:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.3-jre</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我还依赖于依赖关系中的Google API客户端:

<dependency>
    <groupId>com.google.api-client</groupId>
    <artifactId>google-api-client</artifactId>
    <version>1.23.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但由于一些奇怪的原因,这具有以下依赖性:

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava-jdk5</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

现在我的WAR结束了两个Guava JAR:

  • 番石榴23.3 jre.jar
  • 番石榴jdk5-17.0.jar

这给出了几个问题,因为在guava-jdk5-17.0.jar编译代码时运行时更喜欢guava-23.3-jre.jar.

为什么Google API Client依赖于Guava for JDK5?拥有两个版本会不会更有意义,例如:

  • google-api-client 这取决于常规番石榴,最好是版本23.3(截至目前)
  • google-api-client-jdk5 这取决于Guava的JDK5

Fra*_*hey 7

请参阅https://github.com/google/google-api-java-client/issues/903.应该可以进行以下解决方案:

    <dependency>
        <groupId>com.google.api-client</groupId>
        <artifactId>google-api-client</artifactId>
        <exclusions>
            <exclusion>
                <groupId>com.google.guava</groupId>
                <artifactId>guava-jdk5</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
Run Code Online (Sandbox Code Playgroud)