opentelemetry-java-instrume.../examples/distro/agent/build.gradle

64 lines
2.1 KiB
Groovy

plugins {
id("com.github.johnrengelman.shadow") version "6.0.0"
}
configurations {
customShadow
}
dependencies {
customShadow project(path: ":custom", configuration: "shadow")
customShadow project(path: ":instrumentation", configuration: "shadow")
implementation "io.opentelemetry.javaagent:opentelemetry-javaagent:${versions.opentelemetryJavaagent}:all"
}
CopySpec isolateSpec() {
return copySpec {
configurations.customShadow.files.each {
from(zipTree(it)) {
into("inst")
rename("(^.*)\\.class\$", "\$1.classdata")
}
}
}
}
tasks {
shadowJar {
dependsOn ':custom:shadowJar'
dependsOn ':instrumentation:shadowJar'
with isolateSpec()
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
mergeServiceFiles {
include("inst/META-INF/services/*")
}
exclude("**/module-info.class")
// Prevents conflict with other SLF4J instances. Important for premain.
relocate("org.slf4j", "io.opentelemetry.javaagent.slf4j")
// rewrite dependencies calling Logger.getLogger
relocate("java.util.logging.Logger", "io.opentelemetry.javaagent.bootstrap.PatchLogger")
// prevents conflict with library instrumentation
relocate("io.opentelemetry.instrumentation.api", "io.opentelemetry.javaagent.shaded.instrumentation.api")
// relocate OpenTelemetry API
relocate("io.opentelemetry.api", "io.opentelemetry.javaagent.shaded.io.opentelemetry.api")
relocate("io.opentelemetry.context", "io.opentelemetry.javaagent.shaded.io.opentelemetry.context")
manifest {
attributes.put("Main-Class", "io.opentelemetry.javaagent.OpenTelemetryAgent")
attributes.put("Agent-Class", "io.opentelemetry.javaagent.OpenTelemetryAgent")
attributes.put("Premain-Class", "io.opentelemetry.javaagent.OpenTelemetryAgent")
attributes.put("Can-Redefine-Classes", "true")
attributes.put("Can-Retransform-Classes", "true")
attributes.put("Implementation-Vendor", "Demo")
attributes.put("Implementation-Version", "demo-${project.version}-otel-${versions.opentelemetryJavaagent}")
}
}
assemble {
dependsOn(shadowJar)
}
}