Skip to content

Use okhttp-bom for okhttp version management #1479

Closed
@tschut

Description

@tschut

Describe the bug
#1470 introduced version management for okhttp. However, only 2 specific dependencies of okhttp are now version managed by spring-cloud-commons. This opens the door for version mismatches in projects.

Sample
Specifically, in one of our projects we have a test annotated with @EnableKubernetesMockClient. This uses

[INFO] +- io.fabric8:kubernetes-server-mock:jar:6.13.5:test
[INFO] |  +- io.fabric8:mockwebserver:jar:6.13.5:test
[INFO] |  |  +- com.squareup.okhttp3:mockwebserver:jar:3.12.12:test

which results in

java.lang.NoSuchMethodError: 'void okhttp3.internal.Internal.initializeInstanceForTests()'

	at okhttp3.mockwebserver.MockWebServer.<clinit>(MockWebServer.java:103)
	at io.fabric8.kubernetes.client.server.mock.KubernetesMockServerExtension.initializeKubernetesClientAndMockServer(KubernetesMockServerExtension.java:116)
	at io.fabric8.kubernetes.client.server.mock.KubernetesMockServerExtension.setKubernetesClientAndMockServerFields(KubernetesMockServerExtension.java:172)
	at io.fabric8.kubernetes.client.server.mock.KubernetesMockServerExtension.beforeAll(KubernetesMockServerExtension.java:75)

The 3.12.12 version is coming from here: https://github.com/fabric8io/kubernetes-client/blob/v6.13.5/pom.xml#L94

A fix would be to use okhttp-bom instead:

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp-bom</artifactId>
        <version>${okhttp.version}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions