instrumentation.gradle 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // this project will run in isolation under the agent's classloader
  2. buildscript {
  3. repositories {
  4. mavenCentral()
  5. }
  6. dependencies {
  7. classpath "net.bytebuddy:byte-buddy-gradle-plugin:${versions.bytebuddy}"
  8. classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}"
  9. }
  10. }
  11. plugins {
  12. id "com.github.johnrengelman.shadow"
  13. }
  14. apply from: "${rootDir}/gradle/java.gradle"
  15. Project instr_project = project
  16. subprojects { Project subProj ->
  17. apply plugin: "net.bytebuddy.byte-buddy"
  18. apply plugin: 'muzzle'
  19. subProj.byteBuddy {
  20. transformation {
  21. // Applying NoOp optimizes build by applying bytebuddy plugin to only compileJava task
  22. tasks = ['compileJava', 'compileScala', 'compileKotlin']
  23. plugin = 'datadog.trace.agent.tooling.muzzle.MuzzleGradlePlugin$NoOp'
  24. }
  25. }
  26. subProj.afterEvaluate {
  27. subProj.byteBuddy {
  28. transformation {
  29. tasks = ['compileJava', 'compileScala', 'compileKotlin']
  30. plugin = 'datadog.trace.agent.tooling.muzzle.MuzzleGradlePlugin'
  31. classPath = project(':dd-java-agent:agent-tooling').configurations.instrumentationMuzzle + subProj.configurations.compile + subProj.sourceSets.main.output
  32. }
  33. }
  34. String jdkCompile = null
  35. if (project.hasProperty('minJavaVersionForTests') && project.getProperty('minJavaVersionForTests') != JavaVersion.VERSION_1_7) {
  36. def version = JavaVersion.toVersion(project.getProperty('minJavaVersionForTests'))
  37. def name = "java$version.majorVersion"
  38. jdkCompile = "main_${name}Compile"
  39. }
  40. dependencies {
  41. // Apply common dependencies for instrumentation.
  42. compile project(':dd-trace-api')
  43. compile project(':dd-java-agent:agent-tooling')
  44. compile deps.bytebuddy
  45. if (jdkCompile) {
  46. "$jdkCompile" project(':dd-trace-api')
  47. "$jdkCompile" project(':dd-java-agent:agent-tooling')
  48. "$jdkCompile" deps.bytebuddy
  49. }
  50. annotationProcessor deps.autoservice
  51. implementation deps.autoservice
  52. testCompile project(':dd-java-agent:testing')
  53. testAnnotationProcessor deps.autoservice
  54. testImplementation deps.autoservice
  55. }
  56. // Make it so all instrumentation subproject tests can be run with a single command.
  57. instr_project.tasks.test.dependsOn(subProj.tasks.test)
  58. }
  59. instr_project.dependencies {
  60. compile(project(subProj.getPath()))
  61. }
  62. }
  63. dependencies {
  64. compile(project(':dd-java-agent:agent-tooling')) {
  65. exclude module: ':dd-java-agent:agent-bootstrap'
  66. }
  67. }
  68. configurations {
  69. // exclude bootstrap dependencies from shadowJar
  70. runtime.exclude module: deps.slf4j
  71. runtime.exclude group: 'org.slf4j'
  72. }
  73. shadowJar {
  74. dependencies {
  75. exclude(project(':dd-java-agent:agent-bootstrap'))
  76. exclude(project(':dd-trace-api'))
  77. }
  78. }
  79. jar {
  80. classifier = 'unbundled'
  81. }