diff --git a/agent/agent/src/main/resources/inst/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider b/agent/agent/src/main/resources/inst/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider new file mode 100644 index 00000000000..93d8d0ee99a --- /dev/null +++ b/agent/agent/src/main/resources/inst/META-INF/services/io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider @@ -0,0 +1 @@ +io.opentelemetry.exporter.otlp.internal.OtlpMetricExporterProvider diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index fad471e9378..05375fa4d76 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -32,11 +32,11 @@ dependencies { // When updating, update above in plugins too implementation("com.diffplug.spotless:spotless-plugin-gradle:8.0.0") implementation("com.github.spotbugs.snom:spotbugs-gradle-plugin:6.3.0") - implementation("com.gradleup.shadow:shadow-gradle-plugin:8.3.9") + implementation("com.gradleup.shadow:shadow-gradle-plugin:9.2.2") implementation("org.owasp:dependency-check-gradle:12.1.8") - implementation("io.opentelemetry.instrumentation:gradle-plugins:2.19.0-alpha") + implementation("io.opentelemetry.instrumentation:gradle-plugins:2.21.0-alpha") implementation("net.ltgt.gradle:gradle-errorprone-plugin:4.3.0") implementation("net.ltgt.gradle:gradle-nullaway-plugin:2.3.0") @@ -44,6 +44,4 @@ dependencies { implementation("gradle.plugin.io.morethan.jmhreport:gradle-jmh-report:0.9.6") implementation("me.champeau.jmh:jmh-gradle-plugin:0.7.3") - // earlier versions aren't compatible with Gradle 8.1.1 - implementation("org.springframework.boot:spring-boot-gradle-plugin:2.5.12") } diff --git a/buildSrc/src/main/kotlin/ai.shadow-conventions.gradle.kts b/buildSrc/src/main/kotlin/ai.shadow-conventions.gradle.kts index 35f12ccf566..2ac0649ce38 100644 --- a/buildSrc/src/main/kotlin/ai.shadow-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/ai.shadow-conventions.gradle.kts @@ -1,13 +1,38 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import org.gradle.api.file.DuplicatesStrategy plugins { id("com.gradleup.shadow") } tasks.withType().configureEach { + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + mergeServiceFiles() + mergeServiceFiles("META-INF/services/**") mergeServiceFiles { - include("inst/META-INF/services/*") + include("inst/META-INF/services/**") + path = "inst/META-INF/services" } + filesMatching("META-INF/services/**") { + duplicatesStrategy = DuplicatesStrategy.INCLUDE + } + filesMatching("inst/META-INF/services/**") { + duplicatesStrategy = DuplicatesStrategy.INCLUDE + } + exclude("META-INF/services/javax.servlet.ServletContainerInitializer") + exclude("inst/META-INF/services/javax.servlet.ServletContainerInitializer") + exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA") + exclude( + "META-INF/LICENSE", + "META-INF/NOTICE", + "META-INF/LICENSE.txt", + "META-INF/NOTICE.txt", + "META-INF/INDEX.LIST", + "META-INF/io.netty.versions.properties", + "META-INF/AL2.0", + "META-INF/LGPL2.1" + ) + exclude("META-INF/maven/**") exclude("**/module-info.class") diff --git a/buildSrc/src/main/kotlin/ai.smoke-test-jar.gradle.kts b/buildSrc/src/main/kotlin/ai.smoke-test-jar.gradle.kts index bf6a7dcb5ac..a9ae5df5599 100644 --- a/buildSrc/src/main/kotlin/ai.smoke-test-jar.gradle.kts +++ b/buildSrc/src/main/kotlin/ai.smoke-test-jar.gradle.kts @@ -1,11 +1,33 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import com.microsoft.applicationinsights.gradle.AiSmokeTestExtension +import org.gradle.api.file.DuplicatesStrategy plugins { id("ai.smoke-test") - id("org.springframework.boot") + id("com.gradleup.shadow") } val aiSmokeTest = extensions.getByType(AiSmokeTestExtension::class) -aiSmokeTest.testAppArtifactDir.set(tasks.bootJar.flatMap { it.destinationDirectory }) -aiSmokeTest.testAppArtifactFilename.set(tasks.bootJar.flatMap { it.archiveFileName }) +val shadowJar = tasks.named("shadowJar") { + archiveClassifier.set("") + archiveVersion.set("") + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + + mergeServiceFiles() + mergeServiceFiles("META-INF/spring.factories") + mergeServiceFiles("META-INF/spring.handlers") + mergeServiceFiles("META-INF/spring.schemas") + mergeServiceFiles("META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports") + + manifest { + attributes["Main-Class"] = "com.microsoft.applicationinsights.smoketestapp.SpringBootApp" + } +} + +tasks.named("assemble") { + dependsOn(shadowJar) +} + +aiSmokeTest.testAppArtifactDir.set(shadowJar.flatMap { it.destinationDirectory }) +aiSmokeTest.testAppArtifactFilename.set(shadowJar.flatMap { it.archiveFileName }) diff --git a/etw/etw-testapp/build.gradle.kts b/etw/etw-testapp/build.gradle.kts index 2e6a486c0f3..629b4a2845b 100644 --- a/etw/etw-testapp/build.gradle.kts +++ b/etw/etw-testapp/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("ai.java-conventions") - id("org.springframework.boot" version "2.5.12") + id("org.springframework.boot" version "2.7.18") id("war") } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d4081da476b..2e1113280ef 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/smoke-tests/apps/ReadOnly/src/main/java/com/microsoft/applicationinsights/smoketestapp/App.java b/smoke-tests/apps/ReadOnly/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java similarity index 94% rename from smoke-tests/apps/ReadOnly/src/main/java/com/microsoft/applicationinsights/smoketestapp/App.java rename to smoke-tests/apps/ReadOnly/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java index 382610b2ff8..05103c90ea0 100644 --- a/smoke-tests/apps/ReadOnly/src/main/java/com/microsoft/applicationinsights/smoketestapp/App.java +++ b/smoke-tests/apps/ReadOnly/src/main/java/com/microsoft/applicationinsights/smoketestapp/SpringBootApp.java @@ -8,7 +8,7 @@ // Spring boot doesn't support read-only containers // (https://github.com/spring-projects/spring-boot/issues/8578) -public class App { +public class SpringBootApp { private static final Logger logger = Logger.getLogger("smoketestapp"); diff --git a/smoke-tests/apps/gRPC/build.gradle.kts b/smoke-tests/apps/gRPC/build.gradle.kts index eae03a2ecef..99802a6e67d 100644 --- a/smoke-tests/apps/gRPC/build.gradle.kts +++ b/smoke-tests/apps/gRPC/build.gradle.kts @@ -2,7 +2,7 @@ import com.google.protobuf.gradle.* plugins { id("ai.smoke-test-jar") - id("com.google.protobuf") version "0.8.19" + id("com.google.protobuf") version "0.9.5" } val grpcVersion = "1.26.0" // first version with support for arm64