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 {
@@ -11,51 +14,56 @@ tasks.register("latestDepTest", Test)
1114
1215Project parent_project = project
1316subprojects { Project subProj ->
14- apply plugin : ' dd-trace-java.instrument'
15- apply plugin : ' dd-trace-java.muzzle'
16-
17- configurations {
18- instrumentPluginClasspath {
19- visible = false
20- canBeConsumed = false
21- canBeResolved = true
17+ subProj. pluginManager. withPlugin(" dd-trace-java.instrument" ) {
18+ subProj. extensions. configure(InstrumentExtension ) {
19+ it. plugins. addAll(
20+ ' datadog.trace.agent.tooling.muzzle.MuzzleGradlePlugin' ,
21+ ' datadog.trace.agent.tooling.bytebuddy.NewTaskForGradlePlugin' ,
22+ ' datadog.trace.agent.tooling.bytebuddy.reqctx.RewriteRequestContextAdvicePlugin' ,
23+ )
2224 }
23- }
2425
25- instrument. plugins = [
26- ' datadog.trace.agent.tooling.muzzle.MuzzleGradlePlugin' ,
27- ' datadog.trace.agent.tooling.bytebuddy.NewTaskForGradlePlugin' ,
28- ' datadog.trace.agent.tooling.bytebuddy.reqctx.RewriteRequestContextAdvicePlugin' ,
29- ]
26+ subProj. configurations. register(" instrumentPluginClasspath" ) {
27+ it. visible = false
28+ it. canBeConsumed = false
29+ it. canBeResolved = true
3030
31- subProj. tasks. withType(Javadoc ). configureEach { enabled = false }
31+ it. dependencies. add(subProj. dependencies. project(path : ' :dd-java-agent:agent-tooling' , configuration : ' instrumentPluginClasspath' ))
32+ }
33+ }
3234
33- subProj. afterEvaluate {
34- if (! plugins. hasPlugin(" java" )) {
35- return
35+ subProj. pluginManager. withPlugin(" java" ) {
36+ subProj. pluginManager. withPlugin(" dd-trace-java.muzzle" ) {
37+ subProj. configurations. matching { it. name == ' muzzleBootstrap' }. configureEach {
38+ exclude group : ' org.snakeyaml' , module : ' snakeyaml-engine' // we vendor this in the agent jar
39+ }
3640 }
3741
42+ subProj. tasks. withType(Javadoc ). configureEach { enabled = false }
43+
3844 // Configures base dependencies for additional sourceSet
39- configurations
40- .matching { it. name. matches(" ${ SourceSet. MAIN_SOURCE_SET_NAME} _java\\ d+${ JavaPlugin. IMPLEMENTATION_CONFIGURATION_NAME.capitalize()} " ) }
45+ subProj . configurations
46+ .matching { it. name. matches(" ${ MAIN_SOURCE_SET_NAME} _java\\ d+${ IMPLEMENTATION_CONFIGURATION_NAME.capitalize()} " ) }
4147 .configureEach {
42- it. dependencies. add(project . dependencyFactory. create(project(' :dd-trace-api' )))
43- it. dependencies. add(project . dependencyFactory. create(project(' :dd-java-agent:agent-tooling' )))
48+ it. dependencies. add(subProj . dependencyFactory. create(project(' :dd-trace-api' )))
49+ it. dependencies. add(subProj . dependencyFactory. create(project(' :dd-java-agent:agent-tooling' )))
4450 it. dependencies. addLater(libs. bytebuddy)
4551 }
4652
47- configurations. named(' muzzleBootstrap' ) {
48- exclude group : ' org.snakeyaml' , module : ' snakeyaml-engine' // we vendor this in the agent jar
49- }
5053 dependencies {
54+ // Main
55+ annotationProcessor project(' :dd-java-agent:instrumentation-annotation-processor' )
56+ annotationProcessor libs. autoservice. processor
57+ compileOnly libs. autoservice. annotation
58+
5159 // Apply common dependencies for instrumentation.
5260 implementation project(' :dd-trace-api' )
5361 implementation project(' :dd-java-agent:agent-tooling' )
5462 implementation libs. bytebuddy
5563
56- annotationProcessor project( ' :dd-java-agent:instrumentation-annotation-processor ' )
57- annotationProcessor libs. autoservice. processor
58- compileOnly libs. autoservice. annotation
64+ // Tests
65+ testAnnotationProcessor libs. autoservice. processor
66+ testCompileOnly libs. autoservice. annotation
5967
6068 // Include instrumentations instrumenting core JDK classes to ensure interoperability with other instrumentation
6169 testImplementation project(' :dd-java-agent:instrumentation:java:java-concurrent:java-concurrent-1.8' )
@@ -64,28 +72,24 @@ subprojects { Project subProj ->
6472 testImplementation project(' :dd-java-agent:instrumentation:classloading' )
6573
6674 testImplementation project(' :dd-java-agent:instrumentation-testing' )
67- testAnnotationProcessor libs. autoservice. processor
68- testCompileOnly libs. autoservice. annotation
69-
70- instrumentPluginClasspath project(path : ' :dd-java-agent:agent-tooling' , configuration : ' instrumentPluginClasspath' )
7175 }
7276
7377 subProj. tasks. withType(Test ). configureEach { subTask ->
7478 if (subTask. name in [' latestDepTest' , ' latestDepForkedTest' ]) {
7579 subTask. jvmArgs ' -Dtest.dd.latestDepTest=true'
7680 }
7781 }
78- }
7982
80- def path = subProj. getPath()
81- subProj. plugins. withId(" java" ) {
82- if (! path. equals(' :dd-java-agent:instrumentation:vertx:vertx-redis-client:vertx-redis-client-stubs' )) {
83- // don't include the redis RequestImpl stub
83+ if (subProj. path != ' :dd-java-agent:instrumentation:vertx:vertx-redis-client:vertx-redis-client-stubs' ) {
84+ // don't include the redis RequestImpl stubs
8485 parent_project. dependencies {
85- implementation project(path)
86+ addProvider( " implementation" , providers . provider { project(subProj . path) } )
8687 }
8788 }
8889 }
90+
91+ subProj. apply plugin : ' dd-trace-java.instrument'
92+ subProj. apply plugin : ' dd-trace-java.muzzle'
8993}
9094
9195dependencies {
0 commit comments