build.gradle.kts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. // this only exists to make Intellij happy since it doesn't (currently at least) understand our
  28. // inclusion of this artifact inside of :instrumentation-api
  29. compileOnly(project(":instrumentation-api-caching"))
  30. }
  31. configurations {
  32. // exclude bootstrap dependencies from shadowJar
  33. implementation {
  34. exclude("org.slf4j")
  35. exclude("io.opentelemetry", "opentelemetry-api")
  36. exclude("io.opentelemetry", "opentelemetry-api-metrics")
  37. exclude("io.opentelemetry", "opentelemetry-semconv")
  38. }
  39. }
  40. tasks {
  41. named<ShadowJar>("shadowJar") {
  42. duplicatesStrategy = DuplicatesStrategy.FAIL
  43. dependencies {
  44. //These classes are added to bootstrap classloader by javaagent module
  45. exclude(project(":javaagent-bootstrap"))
  46. exclude(project(":instrumentation-api"))
  47. exclude(project(":instrumentation-api-annotation-support"))
  48. exclude(project(":javaagent-instrumentation-api"))
  49. }
  50. }
  51. register("listInstrumentations") {
  52. group = "Help"
  53. description = "List all available instrumentation modules"
  54. doFirst {
  55. subprojects
  56. .filter { it.plugins.hasPlugin("io.opentelemetry.instrumentation.muzzle-check") }
  57. .map { it.path }
  58. .forEach { println(it) }
  59. }
  60. }
  61. }