Closed
Description
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>