Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 42 additions & 38 deletions dd-java-agent/instrumentation/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import static org.gradle.api.plugins.JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME
import static org.gradle.api.tasks.SourceSet.MAIN_SOURCE_SET_NAME

import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

plugins {
Expand All @@ -11,51 +14,56 @@ tasks.register("latestDepTest", Test)

Project parent_project = project
subprojects { Project subProj ->
apply plugin: 'dd-trace-java.instrument'
apply plugin: 'dd-trace-java.muzzle'

configurations {
instrumentPluginClasspath {
visible = false
canBeConsumed = false
canBeResolved = true
subProj.pluginManager.withPlugin("dd-trace-java.instrument") {
subProj.extensions.configure(InstrumentExtension) {
it.plugins.addAll(
'datadog.trace.agent.tooling.muzzle.MuzzleGradlePlugin',
'datadog.trace.agent.tooling.bytebuddy.NewTaskForGradlePlugin',
'datadog.trace.agent.tooling.bytebuddy.reqctx.RewriteRequestContextAdvicePlugin',
)
}
}

instrument.plugins = [
'datadog.trace.agent.tooling.muzzle.MuzzleGradlePlugin',
'datadog.trace.agent.tooling.bytebuddy.NewTaskForGradlePlugin',
'datadog.trace.agent.tooling.bytebuddy.reqctx.RewriteRequestContextAdvicePlugin',
]
subProj.configurations.register("instrumentPluginClasspath") {
it.visible = false
it.canBeConsumed = false
it.canBeResolved = true

subProj.tasks.withType(Javadoc).configureEach { enabled = false }
it.dependencies.add(subProj.dependencies.project(path: ':dd-java-agent:agent-tooling', configuration: 'instrumentPluginClasspath'))
}
}

subProj.afterEvaluate {
if (!plugins.hasPlugin("java")) {
return
subProj.pluginManager.withPlugin("java") {
subProj.pluginManager.withPlugin("dd-trace-java.muzzle") {
subProj.configurations.matching { it.name == 'muzzleBootstrap' }.configureEach {
exclude group: 'org.snakeyaml', module: 'snakeyaml-engine' // we vendor this in the agent jar
}
}

subProj.tasks.withType(Javadoc).configureEach { enabled = false }

// Configures base dependencies for additional sourceSet
configurations
.matching { it.name.matches("${SourceSet.MAIN_SOURCE_SET_NAME}_java\\d+${JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME.capitalize()}") }
subProj.configurations
.matching { it.name.matches("${MAIN_SOURCE_SET_NAME}_java\\d+${IMPLEMENTATION_CONFIGURATION_NAME.capitalize()}") }
.configureEach {
it.dependencies.add(project.dependencyFactory.create(project(':dd-trace-api')))
it.dependencies.add(project.dependencyFactory.create(project(':dd-java-agent:agent-tooling')))
it.dependencies.add(subProj.dependencyFactory.create(project(':dd-trace-api')))
it.dependencies.add(subProj.dependencyFactory.create(project(':dd-java-agent:agent-tooling')))
it.dependencies.addLater(libs.bytebuddy)
}

configurations.named('muzzleBootstrap') {
exclude group: 'org.snakeyaml', module: 'snakeyaml-engine' // we vendor this in the agent jar
}
dependencies {
// Main
annotationProcessor project(':dd-java-agent:instrumentation-annotation-processor')
annotationProcessor libs.autoservice.processor
compileOnly libs.autoservice.annotation

// Apply common dependencies for instrumentation.
implementation project(':dd-trace-api')
implementation project(':dd-java-agent:agent-tooling')
implementation libs.bytebuddy

annotationProcessor project(':dd-java-agent:instrumentation-annotation-processor')
annotationProcessor libs.autoservice.processor
compileOnly libs.autoservice.annotation
// Tests
testAnnotationProcessor libs.autoservice.processor
testCompileOnly libs.autoservice.annotation

// Include instrumentations instrumenting core JDK classes to ensure interoperability with other instrumentation
testImplementation project(':dd-java-agent:instrumentation:java:java-concurrent:java-concurrent-1.8')
Expand All @@ -64,28 +72,24 @@ subprojects { Project subProj ->
testImplementation project(':dd-java-agent:instrumentation:classloading')

testImplementation project(':dd-java-agent:instrumentation-testing')
testAnnotationProcessor libs.autoservice.processor
testCompileOnly libs.autoservice.annotation

instrumentPluginClasspath project(path: ':dd-java-agent:agent-tooling', configuration: 'instrumentPluginClasspath')
}

subProj.tasks.withType(Test).configureEach { subTask ->
if (subTask.name in ['latestDepTest', 'latestDepForkedTest']) {
subTask.jvmArgs '-Dtest.dd.latestDepTest=true'
}
}
}

def path = subProj.getPath()
subProj.plugins.withId("java") {
if (!path.equals(':dd-java-agent:instrumentation:vertx:vertx-redis-client:vertx-redis-client-stubs')) {
// don't include the redis RequestImpl stub
if (subProj.path != ':dd-java-agent:instrumentation:vertx:vertx-redis-client:vertx-redis-client-stubs') {
// don't include the redis RequestImpl stubs
parent_project.dependencies {
implementation project(path)
addProvider("implementation", providers.provider { project(subProj.path) })
}
}
}

subProj.apply plugin: 'dd-trace-java.instrument'
subProj.apply plugin: 'dd-trace-java.muzzle'
}

dependencies {
Expand Down