build.gradle.kts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
  2. // this project will run in isolation under the agent's classloader
  3. plugins {
  4. id("io.opentelemetry.instrumentation.javaagent-shadowing")
  5. id("otel.java-conventions")
  6. }
  7. val instrumentationProjectTest = tasks.named("test")
  8. val instrumentationProjectDependencies = dependencies
  9. subprojects {
  10. val subProj = this
  11. plugins.withId("java") {
  12. instrumentationProjectTest.configure {
  13. dependsOn(subProj.tasks.named("test"))
  14. }
  15. }
  16. plugins.withId("otel.javaagent-instrumentation") {
  17. instrumentationProjectDependencies.run {
  18. implementation(project(subProj.path))
  19. }
  20. }
  21. }
  22. dependencies {
  23. compileOnly(project(":instrumentation-api"))
  24. compileOnly(project(":javaagent-instrumentation-api"))
  25. implementation(project(":javaagent-tooling"))
  26. implementation(project(":javaagent-extension-api"))
  27. }
  28. configurations {
  29. // exclude bootstrap dependencies from shadowJar
  30. implementation {
  31. exclude("org.slf4j")
  32. exclude("io.opentelemetry", "opentelemetry-api")
  33. exclude("io.opentelemetry", "opentelemetry-api-metrics")
  34. exclude("io.opentelemetry", "opentelemetry-semconv")
  35. }
  36. }
  37. tasks {
  38. named<ShadowJar>("shadowJar") {
  39. duplicatesStrategy = DuplicatesStrategy.FAIL
  40. dependencies {
  41. //These classes are added to bootstrap classloader by javaagent module
  42. exclude(project(":javaagent-bootstrap"))
  43. exclude(project(":instrumentation-api"))
  44. exclude(project(":instrumentation-api-annotation-support"))
  45. exclude(project(":javaagent-instrumentation-api"))
  46. }
  47. }
  48. register("listInstrumentations") {
  49. group = "Help"
  50. description = "List all available instrumentation modules"
  51. doFirst {
  52. subprojects
  53. .filter { it.plugins.hasPlugin("io.opentelemetry.instrumentation.muzzle-check") }
  54. .map { it.path }
  55. .forEach { println(it) }
  56. }
  57. }
  58. }