@@ -27,7 +27,19 @@ val bootstrapLibs by configurations.creating {
2727val  baseJavaagentLibs by configurations.creating {
2828  isCanBeResolved =  true 
2929  isCanBeConsumed =  false 
30+   attributes {
31+     attribute(Bundling .BUNDLING_ATTRIBUTE , objects.named(Bundling .SHADOWED ))
32+   }
33+ }
34+ //  This compatibility rule allows to fall back to "regular jars" when a baseJavaagentLibs dependency doesn't have a "shadowed" bundling.
35+ abstract  class  ShadowedJarRule : AttributeCompatibilityRule <Bundling > {
36+   override  fun  execute (details :  CompatibilityCheckDetails <Bundling >) =  details.run  {
37+     if  (consumerValue?.name ==  Bundling .SHADOWED  &&  producerValue?.name ==  Bundling .EXTERNAL ) {
38+       compatible()
39+     }
40+   }
3041}
42+ 
3143//  this configuration collects libs that will be placed in the agent classloader, isolated from the instrumented application code
3244val  javaagentLibs by configurations.creating {
3345  isCanBeResolved =  true 
@@ -54,6 +66,11 @@ val licenseReportDependencies by configurations.creating {
5466}
5567
5668dependencies {
69+   attributesSchema {
70+     attribute(Bundling .BUNDLING_ATTRIBUTE ) {
71+       compatibilityRules.add(ShadowedJarRule ::class .java)
72+     }
73+   }
5774  bootstrapLibs(project(" :instrumentation-api"  ))
5875  //  opentelemetry-api is an api dependency of :instrumentation-api, but opentelemetry-api-incubator is not
5976  bootstrapLibs(" io.opentelemetry:opentelemetry-api-incubator"  )
@@ -74,7 +91,7 @@ dependencies {
7491
7592  baseJavaagentLibs(project(" :javaagent-tooling"  ))
7693  baseJavaagentLibs(project(" :javaagent-internal-logging-application"  ))
77-   baseJavaagentLibs(project(" :javaagent-internal-logging-simple" , configuration  =   " shadow "  ))
94+   baseJavaagentLibs(project(" :javaagent-internal-logging-simple"  ))
7895  baseJavaagentLibs(project(" :muzzle"  ))
7996  baseJavaagentLibs(project(" :instrumentation:opentelemetry-api:opentelemetry-api-1.0:javaagent"  ))
8097  baseJavaagentLibs(project(" :instrumentation:opentelemetry-api:opentelemetry-api-1.4:javaagent"  ))
@@ -94,7 +111,7 @@ dependencies {
94111  baseJavaagentLibs(project(" :instrumentation:opentelemetry-instrumentation-annotations-1.16:javaagent"  ))
95112  baseJavaagentLibs(project(" :instrumentation:executors:javaagent"  ))
96113  baseJavaagentLibs(project(" :instrumentation:internal:internal-application-logger:javaagent"  ))
97-   baseJavaagentLibs(project(" :instrumentation:internal:internal-class-loader:javaagent" , configuration  =   " shaded "  ))
114+   baseJavaagentLibs(project(" :instrumentation:internal:internal-class-loader:javaagent"  ))
98115  baseJavaagentLibs(project(" :instrumentation:internal:internal-eclipse-osgi-3.6:javaagent"  ))
99116  baseJavaagentLibs(project(" :instrumentation:internal:internal-lambda:javaagent"  ))
100117  baseJavaagentLibs(project(" :instrumentation:internal:internal-reflection:javaagent"  ))
0 commit comments