plugins { id "com.github.johnrengelman.shadow" } description = 'opentelemetry-auto' apply from: "${rootDir}/gradle/java.gradle" apply from: "${rootDir}/gradle/version.gradle" configurations { shadowInclude } processResources { from(zipTree(project(':instrumentation').tasks.shadowJar.archiveFile)) { into 'auto-tooling-and-instrumentation.isolated' rename '(^.*)\\.class$', '$1.classdata' // Rename LICENSE file since it clashes with license dir on non-case sensitive FSs (i.e. Mac) rename '^LICENSE$', 'LICENSE.renamed' } dependsOn project(':instrumentation').tasks.shadowJar } jar { archiveClassifier = 'unbundled' manifest { attributes( "Main-Class": "io.opentelemetry.auto.bootstrap.AgentBootstrap", "Agent-Class": "io.opentelemetry.auto.bootstrap.AgentBootstrap", "Premain-Class": "io.opentelemetry.auto.bootstrap.AgentBootstrap", "Can-Redefine-Classes": true, "Can-Retransform-Classes": true, ) } } shadowJar { configurations = [project.configurations.shadowInclude] archiveClassifier = '' mergeServiceFiles() exclude '**/module-info.class' dependencies { exclude(dependency("org.projectlombok:lombok:$versions.lombok")) } // Prevents conflict with other SLF4J instances. Important for premain. relocate 'org.slf4j', 'io.opentelemetry.auto.slf4j' // rewrite dependencies calling Logger.getLogger relocate 'java.util.logging.Logger', 'io.opentelemetry.auto.bootstrap.PatchLogger' // relocate OpenTelemetry API relocate "io.opentelemetry.OpenTelemetry", "io.opentelemetry.auto.shaded.io.opentelemetry.OpenTelemetry" relocate "io.opentelemetry.common", "io.opentelemetry.auto.shaded.io.opentelemetry.common" relocate "io.opentelemetry.context", "io.opentelemetry.auto.shaded.io.opentelemetry.context" relocate "io.opentelemetry.correlationcontext", "io.opentelemetry.auto.shaded.io.opentelemetry.correlationcontext" relocate "io.opentelemetry.internal", "io.opentelemetry.auto.shaded.io.opentelemetry.internal" relocate "io.opentelemetry.metrics", "io.opentelemetry.auto.shaded.io.opentelemetry.metrics" relocate "io.opentelemetry.trace", "io.opentelemetry.auto.shaded.io.opentelemetry.trace" // relocate OpenTelemetry API dependency relocate "io.grpc", "io.opentelemetry.auto.shaded.io.grpc" } dependencies { testCompile project(':auto-bootstrap') testCompile project(':utils:test-utils') testCompile deps.testLogging testCompile deps.guava testCompile 'io.opentracing.contrib.dropwizard:dropwizard-opentracing:0.2.2' shadowInclude project(path: ':auto-bootstrap') } tasks.withType(Test).configureEach { // Multi-threaded logging seems to be causing deadlocks with Gradle's log capture. // jvmArgs "-Dio.opentelemetry.auto.slf4j.simpleLogger.defaultLogLevel=debug" // jvmArgs "-Dorg.slf4j.simpleLogger.defaultLogLevel=debug" doFirst { // Defining here to allow jacoco to be first on the command line. jvmArgs "-javaagent:${shadowJar.archivePath}" } testLogging { events "started" } dependsOn shadowJar }