build.gradle.kts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. plugins {
  2. id("com.github.johnrengelman.shadow")
  3. id("otel.java-conventions")
  4. }
  5. val shadowInclude by configurations.creating {
  6. isCanBeResolved = true
  7. isCanBeConsumed = false
  8. }
  9. dependencies {
  10. compileOnly("com.github.ben-manes.caffeine:caffeine")
  11. shadowInclude("com.github.ben-manes.caffeine:caffeine") {
  12. exclude("com.google.errorprone", "error_prone_annotations")
  13. exclude("org.checkerframework", "checker-qual")
  14. }
  15. compileOnly("com.blogspot.mydailyjava:weak-lock-free")
  16. shadowInclude("com.blogspot.mydailyjava:weak-lock-free")
  17. }
  18. // patch inner class from Caffeine to avoid ForkJoinTask from being loaded too early in the javaagent
  19. val patch by sourceSets.creating {
  20. java {}
  21. }
  22. tasks {
  23. shadowJar {
  24. configurations = listOf(shadowInclude)
  25. relocate("com.github.benmanes.caffeine", "io.opentelemetry.instrumentation.api.internal.shaded.caffeine")
  26. relocate("com.blogspot.mydailyjava.weaklockfree", "io.opentelemetry.instrumentation.api.internal.shaded.weaklockfree")
  27. minimize()
  28. }
  29. val extractShadowJar by registering(Copy::class) {
  30. dependsOn(shadowJar)
  31. // replace caffeine class with our patched version
  32. from(zipTree(shadowJar.get().archiveFile)) {
  33. exclude("io/opentelemetry/instrumentation/api/internal/shaded/caffeine/cache/BoundedLocalCache\$PerformCleanupTask.class")
  34. }
  35. from(patch.output) {
  36. include("io/opentelemetry/instrumentation/api/internal/shaded/caffeine/cache/BoundedLocalCache\$PerformCleanupTask.class")
  37. }
  38. into("build/extracted/shadow")
  39. // prevents empty com/github/benmanes/caffeine/cache path from ending up in instrumentation-api
  40. includeEmptyDirs = false
  41. }
  42. }