From 411f24a0da7fafa1bbf0e1e34677bb30e724d2f5 Mon Sep 17 00:00:00 2001 From: Trask Stalnaker Date: Fri, 19 Sep 2025 08:58:30 -0700 Subject: [PATCH] Alternate approach to handling okhttp/okhttp-jvm dependency --- .../main/kotlin/otel.publish-conventions.gradle.kts | 11 +++++++++++ dependencyManagement/build.gradle.kts | 2 +- exporters/otlp/all/build.gradle.kts | 8 ++------ exporters/otlp/testing-internal/build.gradle.kts | 2 +- exporters/sender/okhttp/build.gradle.kts | 2 +- sdk-extensions/jaeger-remote-sampler/build.gradle.kts | 2 +- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/buildSrc/src/main/kotlin/otel.publish-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.publish-conventions.gradle.kts index cc8cf3a0f5e..0a6a100fe15 100644 --- a/buildSrc/src/main/kotlin/otel.publish-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.publish-conventions.gradle.kts @@ -32,6 +32,17 @@ publishing { name.set("OpenTelemetry Java") url.set("https://github.com/open-telemetry/opentelemetry-java") + withXml { + // Since 5.0 okhttp uses gradle metadata to choose either okhttp-jvm or okhttp-android. + // This does not work for maven builds that don't understand gradle metadata. They end up + // using the okhttp artifact that is an empty jar. Here we replace usages of okhttp with + // okhttp-jvm so that maven could get the actual okhttp dependency instead of the empty jar. + var result = asString() + var modified = result.toString().replace(">okhttp<", ">okhttp-jvm<") + result.clear() + result.append(modified) + } + licenses { license { name.set("The Apache License, Version 2.0") diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index 6cbb9a5353c..348d0918266 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -73,7 +73,7 @@ val DEPENDENCIES = listOf( "com.google.code.findbugs:jsr305:3.0.2", "com.google.guava:guava-beta-checker:1.0", "com.sun.net.httpserver:http:20070405", - "com.squareup.okhttp3:okhttp-jvm:$okhttpVersion", + "com.squareup.okhttp3:okhttp:$okhttpVersion", "com.tngtech.archunit:archunit-junit5:1.4.1", "com.uber.nullaway:nullaway:0.12.10", "edu.berkeley.cs.jqf:jqf-fuzz:1.7", // jqf-fuzz version 1.8+ requires Java 11+ diff --git a/exporters/otlp/all/build.gradle.kts b/exporters/otlp/all/build.gradle.kts index ffa93de7ccc..d6a51932a0d 100644 --- a/exporters/otlp/all/build.gradle.kts +++ b/exporters/otlp/all/build.gradle.kts @@ -34,7 +34,7 @@ dependencies { jmhImplementation("com.linecorp.armeria:armeria") jmhImplementation("com.linecorp.armeria:armeria-grpc") jmhImplementation("io.opentelemetry.proto:opentelemetry-proto") - jmhRuntimeOnly("com.squareup.okhttp3:okhttp-jvm") + jmhRuntimeOnly("com.squareup.okhttp3:okhttp") jmhRuntimeOnly("io.grpc:grpc-netty") } @@ -64,12 +64,8 @@ testing { } } } - if (it.equals("LATEST")) { - implementation("com.squareup.okhttp3:okhttp-jvm") - } else { - implementation("com.squareup.okhttp3:okhttp") - } + implementation("com.squareup.okhttp3:okhttp") implementation("io.grpc:grpc-stub") } diff --git a/exporters/otlp/testing-internal/build.gradle.kts b/exporters/otlp/testing-internal/build.gradle.kts index a18d877b3d4..f4459686389 100644 --- a/exporters/otlp/testing-internal/build.gradle.kts +++ b/exporters/otlp/testing-internal/build.gradle.kts @@ -27,7 +27,7 @@ dependencies { api("io.opentelemetry.proto:opentelemetry-proto") api("org.junit.jupiter:junit-jupiter-api") - implementation("com.squareup.okhttp3:okhttp-jvm") + implementation("com.squareup.okhttp3:okhttp") implementation("org.junit.jupiter:junit-jupiter-params") implementation("com.linecorp.armeria:armeria-grpc-protocol") diff --git a/exporters/sender/okhttp/build.gradle.kts b/exporters/sender/okhttp/build.gradle.kts index 772d164089f..107270e9ada 100644 --- a/exporters/sender/okhttp/build.gradle.kts +++ b/exporters/sender/okhttp/build.gradle.kts @@ -12,7 +12,7 @@ dependencies { implementation(project(":exporters:common")) implementation(project(":sdk:common")) - implementation("com.squareup.okhttp3:okhttp-jvm") + implementation("com.squareup.okhttp3:okhttp") compileOnly("io.grpc:grpc-stub") compileOnly("com.fasterxml.jackson.core:jackson-core") diff --git a/sdk-extensions/jaeger-remote-sampler/build.gradle.kts b/sdk-extensions/jaeger-remote-sampler/build.gradle.kts index 06b15eeac9c..bb85cadc39a 100644 --- a/sdk-extensions/jaeger-remote-sampler/build.gradle.kts +++ b/sdk-extensions/jaeger-remote-sampler/build.gradle.kts @@ -20,7 +20,7 @@ dependencies { implementation(project(":exporters:common")) implementation(project(":exporters:sender:okhttp")) - implementation("com.squareup.okhttp3:okhttp-jvm") + implementation("com.squareup.okhttp3:okhttp") compileOnly("io.grpc:grpc-api") compileOnly("io.grpc:grpc-protobuf")