-
Notifications
You must be signed in to change notification settings - Fork 333
Expand file tree
/
Copy pathbuild.gradle
More file actions
120 lines (102 loc) · 4.85 KB
/
build.gradle
File metadata and controls
120 lines (102 loc) · 4.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
plugins {
id 'com.gradleup.shadow'
}
def otelApiVersion = '1.38.0'
def otelInstrumentationApiVersion = '2.4.0'
apply from: "$rootDir/gradle/java.gradle"
apply plugin: 'dd-trace-java.build-time-instrumentation'
configurations {
def ec = register('embeddedClasspath') {
visible = false
canBeConsumed = false
canBeResolved = true
}
named('compileClasspath') {
compileClasspath.extendsFrom(ec.get())
}
named("buildTimeInstrumentationPlugin") {
it.dependencies.add(project.dependencies.project(
path: ':dd-java-agent:agent-otel:otel-tooling',
configuration: 'buildTimeInstrumentationToolingPlugins'
))
}
}
// Unpack the embeddedClasspath jars into otelUnpackedDir so that OtelShimGradlePlugin can
// instrument them (e.g. inject the OTel shim).
def unpackOtelJars = tasks.register('unpackOtelJars', Sync) {
exclude 'META-INF/'
exclude '**/module-info.class'
exclude '**/package-info.class'
from(configurations.named('embeddedClasspath').map {
it.collect {
zipTree(it)
}
})
// Note: they are intentionally kept in a separate directory from compileJava's output so that
// Gradle's stale-output cleanup on a full rebuild does not delete them before instrumentation.
into layout.buildDirectory.dir("otel-unpacked")
}
buildTimeInstrumentation {
plugins.addAll('datadog.opentelemetry.tooling.shim.OtelShimGradlePlugin')
includeClassDirectories.from(unpackOtelJars)
}
minimumInstructionCoverage = 0.0
minimumBranchCoverage = 0.0
forbiddenApis {
failOnMissingClasses = false
ignoreFailures = true
}
spotbugs {
// To avoid massive report on `io.opentelemetry.*` and `net.bytebbuddy.*` classes.
onlyAnalyze = ['none']
}
dependencies {
// latest OpenTelemetry API for drop-in support; instrumented at build-time with our shim
embeddedClasspath group: 'io.opentelemetry', name: 'opentelemetry-api', version: otelApiVersion
embeddedClasspath group: 'io.opentelemetry.instrumentation', name: 'opentelemetry-instrumentation-api', version: otelInstrumentationApiVersion
embeddedClasspath group: 'io.opentelemetry.javaagent', name: 'opentelemetry-javaagent-extension-api', version: "$otelInstrumentationApiVersion-alpha"
// selected bootstrap types shared across multiple OpenTelemetry instrumentations
embeddedClasspath group: 'io.opentelemetry.javaagent.instrumentation', name: 'opentelemetry-javaagent-servlet-common-bootstrap', version: "$otelInstrumentationApiVersion-alpha"
compileOnly project(':dd-java-agent:agent-bootstrap')
implementation project(':dd-java-agent:agent-otel:otel-shim')
}
tasks.named("shadowJar", ShadowJar) {
dependencies deps.excludeShared
include '*.jar'
include 'io/opentelemetry/api/**'
exclude 'io/opentelemetry/api/incubator/events/**'
exclude 'io/opentelemetry/api/incubator/logs/**'
exclude 'io/opentelemetry/api/incubator/propagation/**'
exclude 'io/opentelemetry/api/incubator/trace/**'
exclude 'io/opentelemetry/api/incubator/version.properties'
include 'io/opentelemetry/context/**'
exclude 'io/opentelemetry/context/StrictContextStorage*'
exclude 'io/opentelemetry/context/internal/shaded/**'
include 'io/opentelemetry/semconv/**'
include 'io/opentelemetry/instrumentation/api/**'
exclude 'io/opentelemetry/instrumentation/api/incubator/log/**'
exclude 'io/opentelemetry/instrumentation/api/incubator/semconv/db/*Sanitizer*'
exclude 'io/opentelemetry/instrumentation/api/internal/cache/**'
exclude 'io/opentelemetry/instrumentation/api/internal/RuntimeVirtualFieldSupplier*'
exclude 'io/opentelemetry/instrumentation/api/util/VirtualField*'
include 'io/opentelemetry/javaagent/bootstrap/**'
exclude 'io/opentelemetry/javaagent/bootstrap/CallDepth*'
exclude 'io/opentelemetry/javaagent/bootstrap/internal/ClassLoaderMatcherCacheHolder*'
exclude 'io/opentelemetry/javaagent/bootstrap/internal/ConfiguredResourceAttributesHolder*'
exclude 'io/opentelemetry/javaagent/bootstrap/internal/DeprecatedConfigProperties*'
exclude 'io/opentelemetry/javaagent/bootstrap/internal/EmptyInstrumentationConfig*'
exclude 'io/opentelemetry/javaagent/bootstrap/internal/InClassLoaderMatcher*'
exclude 'io/opentelemetry/javaagent/bootstrap/internal/InstrumentationConfig*'
include 'datadog/opentelemetry/shim/**'
include 'datadog/trace/bootstrap/otel/**'
relocate 'io.opentelemetry.api', 'datadog.trace.bootstrap.otel.api'
relocate 'io.opentelemetry.context', 'datadog.trace.bootstrap.otel.context'
relocate 'io.opentelemetry.semconv', 'datadog.trace.bootstrap.otel.semconv'
relocate 'io.opentelemetry.instrumentation.api', 'datadog.trace.bootstrap.otel.instrumentation.api'
relocate 'io.opentelemetry.javaagent.bootstrap', 'datadog.trace.bootstrap.otel.instrumentation'
relocate 'datadog.opentelemetry.shim', 'datadog.trace.bootstrap.otel.shim'
}
tasks.named("jar", Jar) {
archiveClassifier = 'unbundled'
}