Procházet zdrojové kódy

Fix maven packaging for instrumentation-api-caching (#3471)

* Fix maven packaging for instrumentation-api-caching

* Use new shadow pattern
Trask Stalnaker před 3 roky
rodič
revize
0299428017

+ 6 - 20
instrumentation-api-caching/build.gradle.kts

@@ -1,14 +1,9 @@
-import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
-
 plugins {
   id("com.github.johnrengelman.shadow")
 
   id("otel.java-conventions")
-  id("otel.publish-conventions")
 }
 
-group = "io.opentelemetry.instrumentation"
-
 val shadowInclude by configurations.creating {
   isCanBeResolved = true
   isCanBeConsumed = false
@@ -26,29 +21,20 @@ dependencies {
 }
 
 tasks {
-  named<ShadowJar>("shadowJar") {
+  shadowJar {
     configurations = listOf(shadowInclude)
 
-    archiveClassifier.set("")
-
     relocate("com.github.benmanes.caffeine", "io.opentelemetry.instrumentation.api.internal.shaded.caffeine")
     relocate("com.blogspot.mydailyjava.weaklockfree", "io.opentelemetry.instrumentation.api.internal.shaded.weaklockfree")
 
     minimize()
   }
 
-  named("jar") {
-    enabled = false
-
+  val extractShadowJar by registering(Copy::class) {
     dependsOn(shadowJar)
-  }
-}
-
-// Because shadow does not use default configurations
-publishing {
-  publications {
-    named<MavenPublication>("maven") {
-      project.shadow.component(this)
-    }
+    from(zipTree(shadowJar.get().archiveFile))
+    into("build/extracted/shadow")
+    // prevents empty com/github/benmanes/caffeine/cache path from ending up in instrumentation-api
+    includeEmptyDirs = false
   }
 }

+ 4 - 1
instrumentation-api/build.gradle.kts

@@ -13,13 +13,16 @@ sourceSets {
       // set to generate into. By default it would be the src/main directory itself.
       srcDir("${buildDir}/generated/sources/jflex")
     }
+
+    val cachingShadedDeps = project(":instrumentation-api-caching")
+    output.dir(cachingShadedDeps.file("build/extracted/shadow"), "builtBy" to ":instrumentation-api-caching:extractShadowJar")
   }
 }
 
 group = "io.opentelemetry.instrumentation"
 
 dependencies {
-  api(project(":instrumentation-api-caching"))
+  compileOnly(project(":instrumentation-api-caching"))
 
   api("io.opentelemetry:opentelemetry-api")
   api("io.opentelemetry:opentelemetry-semconv")