diff --git a/javaagent-exporters/javaagent-exporters.gradle b/javaagent-exporters/javaagent-exporters.gradle new file mode 100644 index 000000000000..ed080ef23f40 --- /dev/null +++ b/javaagent-exporters/javaagent-exporters.gradle @@ -0,0 +1,21 @@ +// Project to collect and shade exporter dependencies included in the agent's full distribution. + +plugins { + id "otel.shadow-conventions" +} + +apply from: "$rootDir/gradle/java.gradle" + +dependencies { + implementation "io.opentelemetry:opentelemetry-exporter-jaeger" + implementation "io.opentelemetry:opentelemetry-exporter-otlp" + implementation "io.opentelemetry:opentelemetry-exporter-otlp-metrics" + + implementation "io.opentelemetry:opentelemetry-exporter-prometheus" + implementation "io.prometheus:simpleclient" + implementation "io.prometheus:simpleclient_httpserver" + + implementation "io.opentelemetry:opentelemetry-exporter-zipkin" + + implementation "io.grpc:grpc-netty-shaded:1.35.1" +} diff --git a/javaagent-tooling/javaagent-tooling.gradle b/javaagent-tooling/javaagent-tooling.gradle index 2285d5a94c87..a46d25eee72f 100644 --- a/javaagent-tooling/javaagent-tooling.gradle +++ b/javaagent-tooling/javaagent-tooling.gradle @@ -35,16 +35,9 @@ dependencies { exclude group: 'io.opentelemetry', module: 'opentelemetry-sdk-common' } - implementation "io.opentelemetry:opentelemetry-exporter-jaeger" + // Only the logging exporter is included in our slim distribution so we include it here. + // Other exporters are in javaagent-exporters implementation "io.opentelemetry:opentelemetry-exporter-logging" - implementation "io.opentelemetry:opentelemetry-exporter-otlp" - implementation "io.opentelemetry:opentelemetry-exporter-otlp-metrics" - - implementation "io.opentelemetry:opentelemetry-exporter-prometheus" - implementation "io.prometheus:simpleclient" - implementation "io.prometheus:simpleclient_httpserver" - - implementation "io.opentelemetry:opentelemetry-exporter-zipkin" api "net.bytebuddy:byte-buddy" implementation "net.bytebuddy:byte-buddy-agent" @@ -53,11 +46,16 @@ dependencies { implementation "org.slf4j:slf4j-api" implementation "com.google.guava:guava" - implementation "io.grpc:grpc-netty-shaded:1.35.1" - testImplementation project(':testing-common') testImplementation "org.assertj:assertj-core" testImplementation "org.mockito:mockito-core" instrumentationMuzzle sourceSets.main.output } + +// Here we only include autoconfigure but don't include OTLP exporters to ensure they are only in +// the full distribution. We need to override the default exporter setting of OTLP as a result. +tasks.withType(Test).configureEach { + environment "OTEL_TRACES_EXPORTER", "none" + environment "OTEL_METRICS_EXPORTER", "none" +} diff --git a/javaagent/javaagent.gradle b/javaagent/javaagent.gradle index 02de6cde89bf..a6dfd14cc8d8 100644 --- a/javaagent/javaagent.gradle +++ b/javaagent/javaagent.gradle @@ -53,8 +53,10 @@ CopySpec isolateSpec(Collection projectsWithShadowJar) { //Includes everything needed for OOTB experience shadowJar { - dependsOn ':instrumentation:shadowJar' - def projectsWithShadowJar = [project(':instrumentation')] + def projectsWithShadowJar = [project(':instrumentation'), project(":javaagent-exporters")] + projectsWithShadowJar.each { + dependsOn("${it.path}:shadowJar") + } with isolateSpec(projectsWithShadowJar) } diff --git a/settings.gradle b/settings.gradle index aa0e0af23805..c4cd34d482a6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -58,6 +58,7 @@ include ':opentelemetry-api-shaded-for-instrumenting' include ':opentelemetry-ext-annotations-shaded-for-instrumenting' include ':javaagent-bootstrap' include ':javaagent-bootstrap-tests' +include ':javaagent-exporters' include ':javaagent-extension-api' include ':javaagent-tooling' include ':javaagent'