diff --git a/README.md b/README.md index e8e72e8023a..0a4945d4a4e 100644 --- a/README.md +++ b/README.md @@ -260,7 +260,6 @@ dependency as follows, replacing `{{artifact-id}}` with the value from the "Arti | [OTLP Common](./exporters/otlp/common) | Shared OTLP components (internal) | `opentelemetry-exporter-otlp-common` | 1.17.0 | | [Jaeger gRPC Exporter](./exporters/jaeger) | Jaeger gRPC trace exporter | `opentelemetry-exporter-jaeger` | 1.17.0 | | [Jaeger Thrift Exporter](./exporters/jaeger-thrift) | Jaeger thrift trace exporter | `opentelemetry-exporter-jaeger-thift` | 1.17.0 | -| [Jaeger Proto](./exporters/jaeger-proto) | Jaeger gRPC protobuf definitions (deprecated) | `opentelemetry-exporter-jaeger-proto` | 1.17.0 | | [Logging Exporter](./exporters/logging) | Logging exporters, includings metrics, traces, and logs | `opentelemetry-exporter-logging` | 1.17.0 | | [OTLP Logging Exporter](./exporters/logging-otlp) | Logging exporters in OTLP protobuf JSON format, including metrics, traces, and logs | `opentelemetry-exporter-logging-otlp` | 1.17.0 | | [Zipkin Exporter](./exporters/zipkin) | Zipkin trace exporter | `opentelemetry-exporter-zipkin` | 1.17.0 | diff --git a/all/build.gradle.kts b/all/build.gradle.kts index 2dae993f1f7..d78544c4960 100644 --- a/all/build.gradle.kts +++ b/all/build.gradle.kts @@ -38,6 +38,16 @@ dependencies { } } } + + // For testing BOM references to artifacts that were previously published + testImplementation(platform(project(":bom"))) + // The io.grpc.grpc-* dependencies are transitive dependencies of opentelemetry-exporter-jaeger-proto + // which must be provided by the user + testImplementation("io.opentelemetry:opentelemetry-exporter-jaeger-proto") + testImplementation("io.grpc:grpc-api") + testImplementation("io.grpc:grpc-protobuf") + testImplementation("io.grpc:grpc-stub") + testImplementation("com.tngtech.archunit:archunit-junit5") } diff --git a/all/src/test/java/io/opentelemetry/all/FallbackArtifactsTest.java b/all/src/test/java/io/opentelemetry/all/FallbackArtifactsTest.java new file mode 100644 index 00000000000..ddd8226ee40 --- /dev/null +++ b/all/src/test/java/io/opentelemetry/all/FallbackArtifactsTest.java @@ -0,0 +1,23 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.all; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +class FallbackArtifactsTest { + + @Test + void exporterJaegerProto() { + classAvailable(io.opentelemetry.exporter.jaeger.proto.api_v2.Collector.class); + classAvailable(io.opentelemetry.exporter.jaeger.proto.api_v2.CollectorServiceGrpc.class); + classAvailable(io.opentelemetry.exporter.jaeger.proto.api_v2.Model.class); + } + + private static void classAvailable(Class clazz) { + Assertions.assertThatCode(() -> Class.forName(clazz.getName())).doesNotThrowAnyException(); + } +} diff --git a/bom/build.gradle.kts b/bom/build.gradle.kts index 8ef13b38a42..3bf935cc8a5 100644 --- a/bom/build.gradle.kts +++ b/bom/build.gradle.kts @@ -6,4 +6,7 @@ description = "OpenTelemetry Bill of Materials" group = "io.opentelemetry" base.archivesName.set("opentelemetry-bom") -otelBom.projectFilter.set { !it.hasProperty("otel.release") } \ No newline at end of file +otelBom.projectFilter.set { !it.hasProperty("otel.release") } + +// Artifacts that were previously published and included in the BOM for backwards compatibility +otelBom.addFallback("opentelemetry-exporter-jaeger-proto", "1.17.0") diff --git a/buildSrc/src/main/kotlin/io/opentelemetry/gradle/OtelBomExtension.kt b/buildSrc/src/main/kotlin/io/opentelemetry/gradle/OtelBomExtension.kt index 38e5f797ae8..0d3756df29c 100644 --- a/buildSrc/src/main/kotlin/io/opentelemetry/gradle/OtelBomExtension.kt +++ b/buildSrc/src/main/kotlin/io/opentelemetry/gradle/OtelBomExtension.kt @@ -6,9 +6,15 @@ package io.opentelemetry.gradle import org.gradle.api.Project +import org.gradle.api.model.ObjectFactory import org.gradle.api.provider.Property import java.util.function.Predicate abstract class OtelBomExtension { abstract val projectFilter: Property> + var fallbacks: MutableSet = hashSetOf() + + fun addFallback(artifactId: String, version: String) { + this.fallbacks.add("io.opentelemetry:" + artifactId + ":" + version) + } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/otel.bom-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.bom-conventions.gradle.kts index d68f56cedb3..e1c71c26e1d 100644 --- a/buildSrc/src/main/kotlin/otel.bom-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.bom-conventions.gradle.kts @@ -61,4 +61,11 @@ afterEvaluate { } } } + otelBom.fallbacks.forEach { fallback -> + dependencies { + constraints { + api(fallback) + } + } + } } diff --git a/exporters/jaeger-proto/build.gradle.kts b/exporters/jaeger-proto/build.gradle.kts index ab9825af1a9..165686f909d 100644 --- a/exporters/jaeger-proto/build.gradle.kts +++ b/exporters/jaeger-proto/build.gradle.kts @@ -1,6 +1,5 @@ plugins { id("otel.protobuf-conventions") - id("otel.publish-conventions") id("otel.animalsniffer-conventions") }