build.gradle.kts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. plugins {
  2. id("otel.sdk-extension")
  3. }
  4. val mrJarVersions = listOf(9, 11)
  5. dependencies {
  6. implementation("io.opentelemetry:opentelemetry-sdk-common")
  7. implementation("io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi")
  8. implementation("io.opentelemetry.semconv:opentelemetry-semconv")
  9. annotationProcessor("com.google.auto.service:auto-service")
  10. compileOnly("com.google.auto.service:auto-service-annotations")
  11. testCompileOnly("com.google.auto.service:auto-service-annotations")
  12. testImplementation("org.junit.jupiter:junit-jupiter-api")
  13. }
  14. for (version in mrJarVersions) {
  15. sourceSets {
  16. create("java$version") {
  17. java {
  18. setSrcDirs(listOf("src/main/java$version"))
  19. }
  20. }
  21. }
  22. tasks {
  23. named<JavaCompile>("compileJava${version}Java") {
  24. sourceCompatibility = "$version"
  25. targetCompatibility = "$version"
  26. options.release.set(version)
  27. }
  28. }
  29. configurations {
  30. named("java${version}Implementation") {
  31. extendsFrom(configurations["implementation"])
  32. }
  33. named("java${version}CompileOnly") {
  34. extendsFrom(configurations["compileOnly"])
  35. }
  36. }
  37. dependencies {
  38. // Common to reference classes in main sourceset from Java 9 one (e.g., to return a common interface)
  39. add("java${version}Implementation", files(sourceSets.main.get().output.classesDirs))
  40. }
  41. }
  42. tasks {
  43. withType(Jar::class) {
  44. val sourcePathProvider = if (name == "jar") {
  45. { ss: SourceSet? -> ss?.output }
  46. } else if (name == "sourcesJar") {
  47. { ss: SourceSet? -> ss?.java }
  48. } else {
  49. { project.objects.fileCollection() }
  50. }
  51. for (version in mrJarVersions) {
  52. into("META-INF/versions/$version") {
  53. from(sourcePathProvider(sourceSets["java$version"]))
  54. }
  55. }
  56. manifest.attributes(
  57. "Multi-Release" to "true",
  58. )
  59. }
  60. }