1+ import static org.gradle.api.plugins.JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME
2+ import static org.gradle.api.tasks.SourceSet.MAIN_SOURCE_SET_NAME
3+
14import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
25
36plugins {
@@ -10,51 +13,56 @@ tasks.register("latestDepTest", Test)
1013
1114Project parent_project = project
1215subprojects { Project subProj ->
13- apply plugin : ' instrument'
14- apply plugin : ' muzzle'
15-
16- configurations {
17- instrumentPluginClasspath {
18- visible = false
19- canBeConsumed = false
20- canBeResolved = true
16+ subProj. pluginManager. withPlugin(" instrument" ) {
17+ subProj. extensions. configure(InstrumentExtension ) {
18+ it. plugins. addAll(
19+ ' datadog.trace.agent.tooling.muzzle.MuzzleGradlePlugin' ,
20+ ' datadog.trace.agent.tooling.bytebuddy.NewTaskForGradlePlugin' ,
21+ ' datadog.trace.agent.tooling.bytebuddy.reqctx.RewriteRequestContextAdvicePlugin' ,
22+ )
2123 }
22- }
2324
24- instrument. plugins = [
25- ' datadog.trace.agent.tooling.muzzle.MuzzleGradlePlugin' ,
26- ' datadog.trace.agent.tooling.bytebuddy.NewTaskForGradlePlugin' ,
27- ' datadog.trace.agent.tooling.bytebuddy.reqctx.RewriteRequestContextAdvicePlugin' ,
28- ]
25+ subProj. configurations. register(" instrumentPluginClasspath" ) {
26+ it. visible = false
27+ it. canBeConsumed = false
28+ it. canBeResolved = true
2929
30- subProj. tasks. withType(Javadoc ). configureEach { enabled = false }
30+ it. dependencies. add(subProj. dependencies. project(path : ' :dd-java-agent:agent-tooling' , configuration : ' instrumentPluginClasspath' ))
31+ }
32+ }
3133
32- subProj. afterEvaluate {
33- if (! plugins. hasPlugin(" java" )) {
34- return
34+ subProj. pluginManager. withPlugin(" java" ) {
35+ subProj. pluginManager. withPlugin(" muzzle" ) {
36+ subProj. configurations. matching { it. name == ' muzzleBootstrap' }. configureEach {
37+ exclude group : ' org.snakeyaml' , module : ' snakeyaml-engine' // we vendor this in the agent jar
38+ }
3539 }
3640
41+ subProj. tasks. withType(Javadoc ). configureEach { enabled = false }
42+
3743 // Configures base dependencies for additional sourceSet
38- configurations
39- .matching { it. name. matches(" ${ SourceSet. MAIN_SOURCE_SET_NAME} _java\\ d+${ JavaPlugin. IMPLEMENTATION_CONFIGURATION_NAME.capitalize()} " ) }
44+ subProj . configurations
45+ .matching { it. name. matches(" ${ MAIN_SOURCE_SET_NAME} _java\\ d+${ IMPLEMENTATION_CONFIGURATION_NAME.capitalize()} " ) }
4046 .configureEach {
41- it. dependencies. add(project . dependencyFactory. create(project(' :dd-trace-api' )))
42- it. dependencies. add(project . dependencyFactory. create(project(' :dd-java-agent:agent-tooling' )))
47+ it. dependencies. add(subProj . dependencyFactory. create(project(' :dd-trace-api' )))
48+ it. dependencies. add(subProj . dependencyFactory. create(project(' :dd-java-agent:agent-tooling' )))
4349 it. dependencies. addLater(libs. bytebuddy)
4450 }
4551
46- configurations. named(' muzzleBootstrap' ) {
47- exclude group : ' org.snakeyaml' , module : ' snakeyaml-engine' // we vendor this in the agent jar
48- }
4952 dependencies {
53+ // Main
54+ annotationProcessor project(' :dd-java-agent:instrumentation-annotation-processor' )
55+ annotationProcessor libs. autoservice. processor
56+ compileOnly libs. autoservice. annotation
57+
5058 // Apply common dependencies for instrumentation.
5159 implementation project(' :dd-trace-api' )
5260 implementation project(' :dd-java-agent:agent-tooling' )
5361 implementation libs. bytebuddy
5462
55- annotationProcessor project( ' :dd-java-agent:instrumentation-annotation-processor ' )
56- annotationProcessor libs. autoservice. processor
57- compileOnly libs. autoservice. annotation
63+ // Tests
64+ testAnnotationProcessor libs. autoservice. processor
65+ testCompileOnly libs. autoservice. annotation
5866
5967 // Include instrumentations instrumenting core JDK classes to ensure interoperability with other instrumentation
6068 testImplementation project(' :dd-java-agent:instrumentation:java:java-concurrent:java-concurrent-1.8' )
@@ -63,28 +71,24 @@ subprojects { Project subProj ->
6371 testImplementation project(' :dd-java-agent:instrumentation:classloading' )
6472
6573 testImplementation project(' :dd-java-agent:instrumentation-testing' )
66- testAnnotationProcessor libs. autoservice. processor
67- testCompileOnly libs. autoservice. annotation
68-
69- instrumentPluginClasspath project(path : ' :dd-java-agent:agent-tooling' , configuration : ' instrumentPluginClasspath' )
7074 }
7175
7276 subProj. tasks. withType(Test ). configureEach { subTask ->
7377 if (subTask. name in [' latestDepTest' , ' latestDepForkedTest' ]) {
7478 subTask. jvmArgs ' -Dtest.dd.latestDepTest=true'
7579 }
7680 }
77- }
7881
79- def path = subProj. getPath()
80- subProj. plugins. withId(" java" ) {
81- if (! path. equals(' :dd-java-agent:instrumentation:vertx:vertx-redis-client-3.9:stubs' )) {
82- // don't include the redis RequestImpl stub
82+ if (subProj. path != ' :dd-java-agent:instrumentation:vertx:vertx-redis-client-3.9:stubs' ) {
83+ // don't include the redis RequestImpl stubs
8384 parent_project. dependencies {
84- implementation project(path)
85+ addProvider( " implementation" , providers . provider { project(subProj . path) } )
8586 }
8687 }
8788 }
89+
90+ subProj. apply plugin : ' instrument'
91+ subProj. apply plugin : ' muzzle'
8892}
8993
9094dependencies {
0 commit comments