From 1c0009b18ce8dec6faf37f4cba676cef7f954a3f Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Tue, 27 Oct 2026 13:12:07 +0100 Subject: [PATCH 1/8] build(samples): Move the JVM samples to their own build The 28 JVM samples are now a standalone Gradle build in sentry-samples that includes the SDK build, like the Android sample and the Android integration tests. They depend on io.sentry:* coordinates, which Gradle substitutes with the SDK's projects. The SDK build doesn't include them back, so the Spring Boot, gretty and shadow plugins the samples apply no longer load in the SDK build. The three bootRunWithAgent tasks find the agent jar from the repository root and take the SDK version from the catalog, since the samples build has its own root directory and gradle.properties. With no samples or integration tests left in the SDK build, the name filters that skipped them for publishing and CodeQL go too. Root check and spotlessApply no longer reach the samples, so preMerge runs this build's check, which covers what the root check ran for them: compilation, jars and spotless. The format workflow runs its spotlessApply. Co-Authored-By: Claude Opus 5.5 --- .cursor/rules/new_module.mdc | 14 +--- AGENTS.md | 5 +- Makefile | 10 ++- build.gradle.kts | 4 +- sentry-samples/build.gradle.kts | 15 ++++ sentry-samples/gradle.properties | 13 +++ .../build.gradle.kts | 6 +- .../build.gradle.kts | 6 +- .../sentry-samples-console/build.gradle.kts | 10 ++- .../sentry-samples-jul/build.gradle.kts | 4 +- .../build.gradle.kts | 6 +- .../sentry-samples-log4j2/build.gradle.kts | 4 +- .../sentry-samples-logback/build.gradle.kts | 4 +- .../build.gradle.kts | 6 +- .../sentry-samples-openfeign/build.gradle.kts | 6 +- .../sentry-samples-servlet/build.gradle.kts | 4 +- .../sentry-samples-spring-7/build.gradle.kts | 8 +- .../build.gradle.kts | 16 ++-- .../build.gradle.kts | 18 ++-- .../build.gradle.kts | 19 +++-- .../build.gradle.kts | 16 ++-- .../build.gradle.kts | 12 +-- .../build.gradle.kts | 18 ++-- .../build.gradle.kts | 18 ++-- .../build.gradle.kts | 18 ++-- .../build.gradle.kts | 19 +++-- .../build.gradle.kts | 20 +++-- .../build.gradle.kts | 18 ++-- .../build.gradle.kts | 19 +++-- .../build.gradle.kts | 12 +-- .../build.gradle.kts | 10 ++- .../build.gradle.kts | 18 ++-- .../build.gradle.kts | 8 +- .../sentry-samples-spring/build.gradle.kts | 8 +- sentry-samples/settings.gradle.kts | 84 +++++++++++++++++++ settings.gradle.kts | 30 +------ 36 files changed, 322 insertions(+), 184 deletions(-) create mode 100644 sentry-samples/build.gradle.kts create mode 100644 sentry-samples/gradle.properties create mode 100644 sentry-samples/settings.gradle.kts diff --git a/.cursor/rules/new_module.mdc b/.cursor/rules/new_module.mdc index b9fdde3df6a..a190240f7fb 100644 --- a/.cursor/rules/new_module.mdc +++ b/.cursor/rules/new_module.mdc @@ -31,16 +31,10 @@ the release that first ships it. All of the following have to be merged **before 2. Add the module to the include list in `settings.gradle.kts` -If adding a `sentry-samples` module, also add it to the `ignoredProjects` list in the root `build.gradle.kts`: - -```kotlin -ignoredProjects.addAll( - listOf( - // ... existing projects ... - "sentry-samples-{module-name}" - ) -) -``` +If adding a sample, add it to the include list in `sentry-samples/settings.gradle.kts` instead. The +samples are a separate Gradle build that includes the SDK build, so a sample depends on +`"io.sentry:sentry-{module-name}:$sentryVersion"` (with `val sentryVersion = +libs.versions.sentry.get()`), and Gradle substitutes the SDK's project for it. 3. Add a `SENTRY_{MODULE}_SDK_NAME` constant to the `Config.Sentry` block in `buildSrc/src/main/java/Config.kt`: diff --git a/AGENTS.md b/AGENTS.md index 8895b5fb658..5097bf3c1c6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -67,6 +67,9 @@ resolves the per-module test task, including integration test suites, for you. # Build the Android sample, a separate Gradle build that includes this one ./gradlew -p sentry-samples/sentry-samples-android assembleDebug + +# Build the JVM samples, another separate Gradle build that includes this one +./gradlew -p sentry-samples assemble ``` ## Development Workflow Rules @@ -113,7 +116,7 @@ The repository is organized into multiple modules: ### Utility Modules - **`sentry-test-support`** - Shared test utilities, including `MockSentryServer` and envelope matchers -- **`sentry-samples`** - Example applications. `sentry-samples-android` is a separate Gradle build that includes this one, so root tasks such as `check` and `spotlessApply` don't reach it +- **`sentry-samples`** - Example applications, in two separate Gradle builds that include this one: `sentry-samples` (JVM) and `sentry-samples/sentry-samples-android`. Root tasks such as `check` and `spotlessApply` don't reach them, and `sentry-android-integration-tests` is a separate build too - **`sentry-bom`** - Bill of Materials for dependency management ### Key Architectural Patterns diff --git a/Makefile b/Makefile index d88f81d09ab..fe1f3c5c9f0 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ -.PHONY: all clean compile javadocs dryRelease update format checkFormat api assembleUiTestRelease assembleUiTestCriticalRelease runUiTestCritical check preMerge publish +.PHONY: all clean compile javadocs dryRelease update format checkFormat api assembleUiTestRelease assembleUiTestCriticalRelease runUiTestCritical check checkSamples preMerge publish all: stop clean javadocs compile assembleUiTests: assembleUiTestRelease -preMerge: check +preMerge: check checkSamples publish: clean dryRelease # deep clean @@ -28,12 +28,14 @@ update: # Spotless formats the code. The root spotlessApply doesn't reach the separate builds. format: ./gradlew spotlessApply + ./gradlew -p sentry-samples spotlessApply ./gradlew -p sentry-samples/sentry-samples-android spotlessApply ./gradlew -p sentry-android-integration-tests spotlessApply # Spotless check's code checkFormat: ./gradlew spotlessJavaCheck spotlessKotlinCheck + ./gradlew -p sentry-samples spotlessJavaCheck spotlessKotlinCheck ./gradlew -p sentry-samples/sentry-samples-android spotlessJavaCheck spotlessKotlinCheck ./gradlew -p sentry-android-integration-tests spotlessJavaCheck spotlessKotlinCheck @@ -56,3 +58,7 @@ runUiTestCritical: # Run tests and lint check: ./gradlew check + +# The samples are separate builds, so the root `check` doesn't reach them +checkSamples: + ./gradlew -p sentry-samples check diff --git a/build.gradle.kts b/build.gradle.kts index fff33104ae9..ea749c55d4e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -51,9 +51,7 @@ allprojects { tasks.register("buildForCodeQL") { subprojects .filter { - !it.displayName.contains("sample") && - !it.displayName.contains("integration-tests") && - !it.displayName.contains("bom") && + !it.displayName.contains("bom") && it.name != "sentry-opentelemetry" } .forEach { proj -> diff --git a/sentry-samples/build.gradle.kts b/sentry-samples/build.gradle.kts new file mode 100644 index 00000000000..378180567e1 --- /dev/null +++ b/sentry-samples/build.gradle.kts @@ -0,0 +1,15 @@ +// Loads the shared plugins once for every sample, so they all share one classpath. The Spring Boot +// plugin is applied in each sample instead, because the samples use different versions of it. +plugins { + alias(libs.plugins.kotlin.jvm) apply false + alias(libs.plugins.kotlin.spring) apply false + alias(libs.plugins.spring.dependency.management) apply false + alias(libs.plugins.gradle.versions) apply false + id("io.sentry.spotless") apply false + id("io.sentry.jdk-target") apply false +} + +subprojects { + apply(plugin = "io.sentry.spotless") + apply(plugin = "io.sentry.jdk-target") +} diff --git a/sentry-samples/gradle.properties b/sentry-samples/gradle.properties new file mode 100644 index 00000000000..d4b4b304bdc --- /dev/null +++ b/sentry-samples/gradle.properties @@ -0,0 +1,13 @@ +# Gradle properties are per build, so this repeats what the samples need from the SDK build's +# gradle.properties. settings.gradle.kts reads the SDK version from that file. + +org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=2g -XX:+CrashOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC +org.gradle.caching=true +org.gradle.parallel=true +org.gradle.configureondemand=true +org.gradle.configuration-cache=true +org.gradle.configuration-cache.parallel=true + +kotlin.stdlib.default.dependency=false + +systemProp.org.gradle.internal.http.socketTimeout=120000 diff --git a/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts index 66a965a0fb4..f99e78dd22e 100644 --- a/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-console-opentelemetry-noagent/build.gradle.kts @@ -7,11 +7,13 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.console.Main") } dependencies { - implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentless) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-opentelemetry-agentless:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") } // Configure the Shadow JAR (executable JAR with all dependencies) diff --git a/sentry-samples/sentry-samples-console-otlp/build.gradle.kts b/sentry-samples/sentry-samples-console-otlp/build.gradle.kts index ee327c288c1..dd0e4a149b2 100644 --- a/sentry-samples/sentry-samples-console-otlp/build.gradle.kts +++ b/sentry-samples/sentry-samples-console-otlp/build.gradle.kts @@ -7,11 +7,13 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.console.Main") } dependencies { - implementation(projects.sentryOpentelemetry.sentryOpentelemetryOtlp) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-opentelemetry-otlp:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.otel.semconv) implementation(libs.otel.semconv.incubating) implementation(libs.otel.exporter.logging) diff --git a/sentry-samples/sentry-samples-console/build.gradle.kts b/sentry-samples/sentry-samples-console/build.gradle.kts index 8abef5c4c11..d70b509a72f 100644 --- a/sentry-samples/sentry-samples-console/build.gradle.kts +++ b/sentry-samples/sentry-samples-console/build.gradle.kts @@ -7,13 +7,15 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.console.Main") } dependencies { - implementation(projects.sentry) - implementation(projects.sentryAsyncProfiler) - implementation(projects.sentryJcache) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") + implementation("io.sentry:sentry-jcache:$sentryVersion") + implementation("io.sentry:sentry-kafka:$sentryVersion") implementation(libs.jcache) implementation(libs.caffeine.jcache) implementation(libs.kafka.clients) diff --git a/sentry-samples/sentry-samples-jul/build.gradle.kts b/sentry-samples/sentry-samples-jul/build.gradle.kts index 6d648c74ed2..5129c48b62a 100644 --- a/sentry-samples/sentry-samples-jul/build.gradle.kts +++ b/sentry-samples/sentry-samples-jul/build.gradle.kts @@ -7,10 +7,12 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.jul.Main") } dependencies { - implementation(projects.sentryJul) + implementation("io.sentry:sentry-jul:$sentryVersion") implementation(libs.slf4j.jdk14) } diff --git a/sentry-samples/sentry-samples-ktor-client/build.gradle.kts b/sentry-samples/sentry-samples-ktor-client/build.gradle.kts index c1704330564..6f31bfe9e48 100644 --- a/sentry-samples/sentry-samples-ktor-client/build.gradle.kts +++ b/sentry-samples/sentry-samples-ktor-client/build.gradle.kts @@ -6,6 +6,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.ktorClient.Main") } configure { @@ -21,8 +23,8 @@ dependencies { implementation(libs.ktor.client.core) implementation(libs.ktor.client.java) implementation(libs.kotlinx.coroutines) - implementation(projects.sentry) - implementation(projects.sentryKtorClient) + implementation("io.sentry:sentry:$sentryVersion") + implementation("io.sentry:sentry-ktor-client:$sentryVersion") } tasks.test { useJUnitPlatform() } diff --git a/sentry-samples/sentry-samples-log4j2/build.gradle.kts b/sentry-samples/sentry-samples-log4j2/build.gradle.kts index 5ead007432d..ea8373c939f 100644 --- a/sentry-samples/sentry-samples-log4j2/build.gradle.kts +++ b/sentry-samples/sentry-samples-log4j2/build.gradle.kts @@ -7,10 +7,12 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.log4j2.Main") } dependencies { - implementation(projects.sentryLog4j2) + implementation("io.sentry:sentry-log4j2:$sentryVersion") implementation(libs.log4j.api) implementation(libs.log4j.core) } diff --git a/sentry-samples/sentry-samples-logback/build.gradle.kts b/sentry-samples/sentry-samples-logback/build.gradle.kts index 6deebda29f2..c3e10054745 100644 --- a/sentry-samples/sentry-samples-logback/build.gradle.kts +++ b/sentry-samples/sentry-samples-logback/build.gradle.kts @@ -7,10 +7,12 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.logback.Main") } dependencies { - implementation(projects.sentryLogback) + implementation("io.sentry:sentry-logback:$sentryVersion") implementation(libs.logback.classic) } diff --git a/sentry-samples/sentry-samples-netflix-dgs/build.gradle.kts b/sentry-samples/sentry-samples-netflix-dgs/build.gradle.kts index f64c52f2d00..097b7dbcccb 100644 --- a/sentry-samples/sentry-samples-netflix-dgs/build.gradle.kts +++ b/sentry-samples/sentry-samples-netflix-dgs/build.gradle.kts @@ -12,6 +12,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.netflix.dgs.NetlixDgsApplication") } group = "io.sentry.sample.spring-boot" @@ -27,8 +29,8 @@ dependencies { implementation(libs.springboot.starter.web) implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarter) - implementation(projects.sentryGraphql) + implementation("io.sentry:sentry-spring-boot-starter:$sentryVersion") + implementation("io.sentry:sentry-graphql:$sentryVersion") implementation(platform("com.netflix.graphql.dgs:graphql-dgs-platform-dependencies:4.9.2")) implementation("com.netflix.graphql.dgs:graphql-dgs-subscriptions-websockets-autoconfigure:4.9.2") implementation("com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter") diff --git a/sentry-samples/sentry-samples-openfeign/build.gradle.kts b/sentry-samples/sentry-samples-openfeign/build.gradle.kts index e19e7478193..de871eb4115 100644 --- a/sentry-samples/sentry-samples-openfeign/build.gradle.kts +++ b/sentry-samples/sentry-samples-openfeign/build.gradle.kts @@ -6,6 +6,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.openfeign.Main") } configure { @@ -14,8 +16,8 @@ configure { } dependencies { - implementation(projects.sentry) - implementation(projects.sentryOpenfeign) + implementation("io.sentry:sentry:$sentryVersion") + implementation("io.sentry:sentry-openfeign:$sentryVersion") implementation(libs.feign.core) implementation(libs.feign.gson) } diff --git a/sentry-samples/sentry-samples-servlet/build.gradle.kts b/sentry-samples/sentry-samples-servlet/build.gradle.kts index 6f4d1ebabe7..760fbe87f20 100644 --- a/sentry-samples/sentry-samples-servlet/build.gradle.kts +++ b/sentry-samples/sentry-samples-servlet/build.gradle.kts @@ -13,8 +13,10 @@ java.sourceCompatibility = JavaVersion.VERSION_1_8 java.targetCompatibility = JavaVersion.VERSION_1_8 dependencies { - implementation(projects.sentryServlet) + implementation("io.sentry:sentry-servlet:$sentryVersion") implementation("javax.servlet:javax.servlet-api:4.0.1") } +val sentryVersion = libs.versions.sentry.get() + tasks.withType().configureEach { useJUnitPlatform() } diff --git a/sentry-samples/sentry-samples-spring-7/build.gradle.kts b/sentry-samples/sentry-samples-spring-7/build.gradle.kts index c9825bda212..e16b85724cc 100644 --- a/sentry-samples/sentry-samples-spring-7/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-7/build.gradle.kts @@ -14,6 +14,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.spring7.Main") } // Ensure WAR is up to date before run task @@ -38,9 +40,9 @@ dependencies { implementation("org.springframework.security:spring-security-config") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpring7) - implementation(projects.sentryLogback) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-7:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.jackson.databind) implementation(libs.logback.classic) implementation(libs.servlet.jakarta.api) diff --git a/sentry-samples/sentry-samples-spring-boot-4-log4j2/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-log4j2/build.gradle.kts index eab14e55247..6564d2899ca 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-log4j2/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-log4j2/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-4-log4j2" version = "0.0.1-SNAPSHOT" @@ -41,12 +43,12 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBoot4Starter) - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-4-starter:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") - implementation(projects.sentryLog4j2) + implementation("io.sentry:sentry-log4j2:$sentryVersion") implementation("org.springframework.boot:spring-boot-starter-log4j2") modules { module("org.springframework.boot:spring-boot-starter-logging") { @@ -63,9 +65,9 @@ dependencies { // kafka implementation(libs.springboot4.starter.kafka) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts index 0f3479ee6b1..57a81dc707b 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry-noagent/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-4" version = "0.0.1-SNAPSHOT" @@ -41,19 +43,19 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBoot4Starter) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) - implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentlessSpring) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-4-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-opentelemetry-agentless-spring:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") // kafka implementation(libs.springboot4.starter.kafka) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts index 7b92e24a462..f20af05ccf1 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-opentelemetry/build.gradle.kts @@ -11,6 +11,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-4" version = "0.0.1-SNAPSHOT" @@ -42,23 +44,23 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBoot4Starter) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-4-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.otel) // kafka implementation(libs.springboot4.starter.kafka) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // cache tracing implementation(libs.springboot4.starter.cache) implementation(libs.caffeine) // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } @@ -69,9 +71,8 @@ tasks.register("bootRunWithAgent").configure { mainClass = mainBootRunTask.mainClass classpath = mainBootRunTask.classpath - val versionName = project.properties["versionName"] as String val agentJarPath = - "$rootDir/sentry-opentelemetry/sentry-opentelemetry-agent/build/libs/sentry-opentelemetry-agent-$versionName.jar" + "$rootDir/../sentry-opentelemetry/sentry-opentelemetry-agent/build/libs/sentry-opentelemetry-agent-$sentryVersion.jar" val dsn = System.getenv("SENTRY_DSN") diff --git a/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts index 88f82666c5d..016f1c70b30 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-otlp/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-4-otlp" version = "0.0.1-SNAPSHOT" @@ -41,19 +43,19 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBoot4Starter) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) - implementation(projects.sentryOpentelemetry.sentryOpentelemetryOtlpSpring) + implementation("io.sentry:sentry-spring-boot-4-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") + implementation("io.sentry:sentry-opentelemetry-otlp-spring:$sentryVersion") // cache tracing implementation(libs.springboot4.starter.cache) implementation(libs.caffeine) // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts index 942b70d491d..23140a7b21d 100644 --- a/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4-webflux/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-4-webflux" version = "0.0.1-SNAPSHOT" @@ -17,11 +19,11 @@ version = "0.0.1-SNAPSHOT" dependencies { implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBoot4Starter) - implementation(projects.sentryLogback) - implementation(projects.sentryJdbc) - implementation(projects.sentryGraphql22) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-4-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-jdbc:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.context.propagation) implementation(libs.springboot4.starter.actuator) implementation(libs.springboot4.starter.graphql) diff --git a/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts index 2059633409f..77393c9b36c 100644 --- a/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-4/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-4" version = "0.0.1-SNAPSHOT" @@ -41,11 +43,11 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBoot4Starter) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-4-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") // cache tracing implementation(libs.springboot4.starter.cache) @@ -53,13 +55,13 @@ dependencies { // kafka implementation(libs.springboot4.starter.kafka) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // okhttp client instrumentation - implementation(projects.sentryOkhttp) + implementation("io.sentry:sentry-okhttp:$sentryVersion") implementation(libs.okhttp) // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-log4j2/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-jakarta-log4j2/build.gradle.kts index 0c57e1259f1..0e8e2069b06 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-log4j2/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-log4j2/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-jakarta-log4j2" version = "0.0.1-SNAPSHOT" @@ -43,8 +45,8 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarterJakarta) - implementation(projects.sentryLog4j2) + implementation("io.sentry:sentry-spring-boot-starter-jakarta:$sentryVersion") + implementation("io.sentry:sentry-log4j2:$sentryVersion") implementation("org.springframework.boot:spring-boot-starter-log4j2") modules { module("org.springframework.boot:spring-boot-starter-logging") { @@ -54,10 +56,10 @@ dependencies { ) } } - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) - implementation(projects.sentryOpenfeature) + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") + implementation("io.sentry:sentry-openfeature:$sentryVersion") // cache tracing implementation(libs.springboot3.starter.cache) @@ -65,12 +67,12 @@ dependencies { // kafka implementation(libs.spring.kafka3) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // OpenFeature SDK implementation(libs.openfeature) // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts index 757bbda8fb1..12b86dcc6b5 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry-noagent/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-jakarta" version = "0.0.1-SNAPSHOT" @@ -44,22 +46,22 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarterJakarta) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) - implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentlessSpring) + implementation("io.sentry:sentry-spring-boot-starter-jakarta:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") + implementation("io.sentry:sentry-opentelemetry-agentless-spring:$sentryVersion") // kafka implementation(libs.spring.kafka3) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // cache tracing implementation(libs.springboot3.starter.cache) implementation(libs.caffeine) // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts index 9e6201fd6a1..0ba3ebf83c4 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-jakarta-opentelemetry/build.gradle.kts @@ -11,6 +11,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-jakarta" version = "0.0.1-SNAPSHOT" @@ -44,23 +46,23 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarterJakarta) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) + implementation("io.sentry:sentry-spring-boot-starter-jakarta:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") implementation(libs.otel) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-async-profiler:$sentryVersion") // kafka implementation(libs.spring.kafka3) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // cache tracing implementation(libs.springboot3.starter.cache) implementation(libs.caffeine) // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } @@ -71,9 +73,8 @@ tasks.register("bootRunWithAgent").configure { mainClass = mainBootRunTask.mainClass classpath = mainBootRunTask.classpath - val versionName = project.properties["versionName"] as String val agentJarPath = - "$rootDir/sentry-opentelemetry/sentry-opentelemetry-agent/build/libs/sentry-opentelemetry-agent-$versionName.jar" + "$rootDir/../sentry-opentelemetry/sentry-opentelemetry-agent/build/libs/sentry-opentelemetry-agent-$sentryVersion.jar" val dsn = System.getenv("SENTRY_DSN") diff --git a/sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts index 63f9b1799b8..fedd8086ded 100644 --- a/sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-jakarta/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-jakarta" version = "0.0.1-SNAPSHOT" @@ -43,12 +45,12 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarterJakarta) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql22) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) - implementation(projects.sentryOpenfeature) + implementation("io.sentry:sentry-spring-boot-starter-jakarta:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") + implementation("io.sentry:sentry-openfeature:$sentryVersion") // cache tracing implementation(libs.springboot3.starter.cache) @@ -56,16 +58,16 @@ dependencies { // kafka implementation(libs.spring.kafka3) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // OpenFeature SDK implementation(libs.openfeature) // okhttp client instrumentation - implementation(projects.sentryOkhttp) + implementation("io.sentry:sentry-okhttp:$sentryVersion") implementation(libs.okhttp) // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts index fafda035855..97ba9a0ac48 100644 --- a/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-opentelemetry-noagent/build.gradle.kts @@ -12,6 +12,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + // Spring scans this app's own bytecode with its repackaged ASM at startup, and the oldest version // the Spring Boot 2.x matrix covers (2.4.13, Spring 5.3.13) fails on class files as new as the // toolchain's: "Unsupported class file major version 65". Only the app is scanned, so its test @@ -50,18 +52,18 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarter) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql) - implementation(projects.sentryQuartz) - implementation(projects.sentryOpentelemetry.sentryOpentelemetryAgentlessSpring) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-opentelemetry-agentless-spring:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.spring.kafka2) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts index 5e5ceb5eafd..bd2e68e334b 100644 --- a/sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-opentelemetry/build.gradle.kts @@ -12,6 +12,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + // Spring scans this app's own bytecode with its repackaged ASM at startup, and the oldest version // the Spring Boot 2.x matrix covers (2.4.13, Spring 5.3.13) fails on class files as new as the // toolchain's: "Unsupported class file major version 65". Only the app is scanned, so its test @@ -49,18 +51,18 @@ dependencies { implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarter) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.otel) implementation(libs.spring.kafka2) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } @@ -92,9 +94,8 @@ tasks.register("bootRunWithAgent").configure { mainClass.set("io.sentry.samples.spring.boot.SentryDemoApplication") classpath = sourceSets["main"].runtimeClasspath - val versionName = project.properties["versionName"] as String val agentJarPath = - "$rootDir/sentry-opentelemetry/sentry-opentelemetry-agent/build/libs/sentry-opentelemetry-agent-$versionName.jar" + "$rootDir/../sentry-opentelemetry/sentry-opentelemetry-agent/build/libs/sentry-opentelemetry-agent-$sentryVersion.jar" val dsn = System.getenv("SENTRY_DSN") diff --git a/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts index eba13d006fd..50c1b85a197 100644 --- a/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-webflux-jakarta/build.gradle.kts @@ -10,6 +10,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.spring-boot-webflux-jakarta" version = "0.0.1-SNAPSHOT" @@ -26,11 +28,11 @@ extra["kotlin-coroutines.version"] = "1.9.0" dependencies { implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarterJakarta) - implementation(projects.sentryLogback) - implementation(projects.sentryJdbc) - implementation(projects.sentryGraphql22) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-starter-jakarta:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-jdbc:$sentryVersion") + implementation("io.sentry:sentry-graphql-22:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.context.propagation) implementation(libs.springboot3.starter.actuator) implementation(libs.springboot3.starter.graphql) diff --git a/sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts index 2726fdb076c..f066a9dc9e0 100644 --- a/sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot-webflux/build.gradle.kts @@ -12,6 +12,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + // Spring scans this app's own bytecode with its repackaged ASM at startup, and the oldest version // the Spring Boot 2.x matrix covers (2.4.13, Spring 5.3.13) fails on class files as new as the // toolchain's: "Unsupported class file major version 65". Only the app is scanned, so its test @@ -35,10 +37,10 @@ dependencies { implementation(libs.springboot.starter.webflux) implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarter) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") } val runtimeClasspath = configurations.named("runtimeClasspath") diff --git a/sentry-samples/sentry-samples-spring-boot/build.gradle.kts b/sentry-samples/sentry-samples-spring-boot/build.gradle.kts index f1c71766f57..234b2bcc869 100644 --- a/sentry-samples/sentry-samples-spring-boot/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-boot/build.gradle.kts @@ -12,6 +12,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + // Spring scans this app's own bytecode with its repackaged ASM at startup, and the oldest version // the Spring Boot 2.x matrix covers (2.4.13, Spring 5.3.13) fails on class files as new as the // toolchain's: "Unsupported class file major version 65". Only the app is scanned, so its test @@ -50,22 +52,22 @@ dependencies { implementation(libs.caffeine) implementation(libs.spring.kafka2) - implementation(projects.sentryKafka) + implementation("io.sentry:sentry-kafka:$sentryVersion") implementation("org.aspectj:aspectjweaver") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8", getKotlinPluginVersion())) - implementation(projects.sentrySpringBootStarter) - implementation(projects.sentryLogback) - implementation(projects.sentryGraphql) - implementation(projects.sentryQuartz) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-boot-starter:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-graphql:$sentryVersion") + implementation("io.sentry:sentry-quartz:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") // okhttp client instrumentation - implementation(projects.sentryOkhttp) + implementation("io.sentry:sentry-okhttp:$sentryVersion") implementation(libs.okhttp) // database query tracing - implementation(projects.sentryJdbc) + implementation("io.sentry:sentry-jdbc:$sentryVersion") runtimeOnly(libs.hsqldb) } diff --git a/sentry-samples/sentry-samples-spring-jakarta/build.gradle.kts b/sentry-samples/sentry-samples-spring-jakarta/build.gradle.kts index d189bec4c84..4c9771ea576 100644 --- a/sentry-samples/sentry-samples-spring-jakarta/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring-jakarta/build.gradle.kts @@ -11,6 +11,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + application { mainClass.set("io.sentry.samples.spring.jakarta.Main") } // Ensure WAR is up to date before run task @@ -36,9 +38,9 @@ dependencies { implementation("org.springframework.security:spring-security-config") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8")) - implementation(projects.sentrySpringJakarta) - implementation(projects.sentryLogback) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring-jakarta:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.jackson.databind) implementation(libs.logback.classic) implementation(libs.servlet.jakarta.api) diff --git a/sentry-samples/sentry-samples-spring/build.gradle.kts b/sentry-samples/sentry-samples-spring/build.gradle.kts index 4ef973725e9..ffb672b8648 100644 --- a/sentry-samples/sentry-samples-spring/build.gradle.kts +++ b/sentry-samples/sentry-samples-spring/build.gradle.kts @@ -11,6 +11,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + // Spring scans this app's own bytecode with its repackaged ASM at startup, and the oldest version // the Spring Boot 2.x matrix covers (2.4.13, Spring 5.3.13) fails on class files as new as the // toolchain's: "Unsupported class file major version 65". Only the app is scanned, so its test @@ -47,9 +49,9 @@ dependencies { implementation("org.springframework.security:spring-security-config") implementation("org.jetbrains.kotlin:kotlin-reflect") implementation(kotlin("stdlib-jdk8")) - implementation(projects.sentrySpring) - implementation(projects.sentryLogback) - implementation(projects.sentryAsyncProfiler) + implementation("io.sentry:sentry-spring:$sentryVersion") + implementation("io.sentry:sentry-logback:$sentryVersion") + implementation("io.sentry:sentry-async-profiler:$sentryVersion") implementation(libs.jackson.databind) implementation(libs.logback.classic) implementation(libs.servlet.api) diff --git a/sentry-samples/settings.gradle.kts b/sentry-samples/settings.gradle.kts new file mode 100644 index 00000000000..91b8060ec4b --- /dev/null +++ b/sentry-samples/settings.gradle.kts @@ -0,0 +1,84 @@ +// A standalone build that includes the SDK build, so the samples depend on the SDK through the same +// io.sentry:* coordinates an app would, and Gradle substitutes the SDK's projects for them. +// The SDK build doesn't include this one back, so the samples' plugins and versions stay out of +// the SDK build. Run it with `./gradlew -p sentry-samples `. +// sentry-samples-android is a separate build of its own. + +pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("com.gradle.develocity") version "4.5.0" + id("com.gradle.common-custom-user-data-gradle-plugin") version "2.8.0" +} + +develocity { + buildScan { + termsOfUseUrl.set("https://gradle.com/help/legal-terms-of-use") + termsOfUseAgree.set("yes") + } +} + +// Gradle reads gradle.properties only for the build it belongs to, so read the SDK version from the +// SDK build's file. +val sentryVersion: String = + providers + .fileContents(layout.settingsDirectory.file("../gradle.properties")) + .asText + .map { java.util.Properties().apply { load(it.reader()) }.getProperty("versionName") } + .get() + +dependencyResolutionManagement { + repositories { + mavenCentral() + mavenLocal() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + version("sentry", sentryVersion) + } + } +} + +rootProject.name = "sentry-samples" + +includeBuild("..") + +// For the io.sentry.spotless and io.sentry.jdk-target convention plugins. +includeBuild("../build-logic") + +include( + "sentry-samples-console", + "sentry-samples-console-opentelemetry-noagent", + "sentry-samples-console-otlp", + "sentry-samples-jul", + "sentry-samples-ktor-client", + "sentry-samples-log4j2", + "sentry-samples-logback", + "sentry-samples-netflix-dgs", + "sentry-samples-openfeign", + "sentry-samples-servlet", + "sentry-samples-spring", + "sentry-samples-spring-7", + "sentry-samples-spring-boot", + "sentry-samples-spring-boot-4", + "sentry-samples-spring-boot-4-log4j2", + "sentry-samples-spring-boot-4-opentelemetry", + "sentry-samples-spring-boot-4-opentelemetry-noagent", + "sentry-samples-spring-boot-4-otlp", + "sentry-samples-spring-boot-4-webflux", + "sentry-samples-spring-boot-jakarta", + "sentry-samples-spring-boot-jakarta-log4j2", + "sentry-samples-spring-boot-jakarta-opentelemetry", + "sentry-samples-spring-boot-jakarta-opentelemetry-noagent", + "sentry-samples-spring-boot-opentelemetry", + "sentry-samples-spring-boot-opentelemetry-noagent", + "sentry-samples-spring-boot-webflux", + "sentry-samples-spring-boot-webflux-jakarta", + "sentry-samples-spring-jakarta", +) diff --git a/settings.gradle.kts b/settings.gradle.kts index aae18edb922..852765c03d8 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -102,33 +102,5 @@ include( "sentry-launchdarkly-android", "sentry-reactor", "sentry-async-profiler", - "sentry-ktor-client", - "sentry-samples:sentry-samples-console", - "sentry-samples:sentry-samples-console-otlp", - "sentry-samples:sentry-samples-console-opentelemetry-noagent", - "sentry-samples:sentry-samples-jul", - "sentry-samples:sentry-samples-ktor-client", - "sentry-samples:sentry-samples-log4j2", - "sentry-samples:sentry-samples-logback", - "sentry-samples:sentry-samples-servlet", - "sentry-samples:sentry-samples-spring", - "sentry-samples:sentry-samples-spring-jakarta", - "sentry-samples:sentry-samples-spring-7", - "sentry-samples:sentry-samples-spring-boot", - "sentry-samples:sentry-samples-spring-boot-opentelemetry", - "sentry-samples:sentry-samples-spring-boot-opentelemetry-noagent", - "sentry-samples:sentry-samples-spring-boot-jakarta", - "sentry-samples:sentry-samples-spring-boot-jakarta-log4j2", - "sentry-samples:sentry-samples-spring-boot-jakarta-opentelemetry", - "sentry-samples:sentry-samples-spring-boot-jakarta-opentelemetry-noagent", - "sentry-samples:sentry-samples-spring-boot-webflux", - "sentry-samples:sentry-samples-spring-boot-webflux-jakarta", - "sentry-samples:sentry-samples-spring-boot-4", - "sentry-samples:sentry-samples-spring-boot-4-log4j2", - "sentry-samples:sentry-samples-spring-boot-4-opentelemetry", - "sentry-samples:sentry-samples-spring-boot-4-opentelemetry-noagent", - "sentry-samples:sentry-samples-spring-boot-4-otlp", - "sentry-samples:sentry-samples-spring-boot-4-webflux", - "sentry-samples:sentry-samples-netflix-dgs", - "sentry-samples:sentry-samples-openfeign" + "sentry-ktor-client" ) From dd1a3c412eefa051fa9dcbc0701c8473b883c8fd Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Thu, 5 Nov 2026 18:20:03 +0100 Subject: [PATCH 2/8] build(samples): Link the JVM samples' Gradle files to the SDK build's gradle.properties, gradlew, gradle/wrapper and gradle/gradle-daemon-jvm.properties are now symlinks to the SDK build's files, as in the Android sample and integration test builds. The copied gradle.properties had drifted from the root one (-Xmx6g and CrashOnOutOfMemoryError), and the build had no wrapper or daemon JDK pin. The settings read the SDK version from the shared versionName property, use the root build's Develocity plugin version, and include each sample on its own line, matching the other separate builds. Co-Authored-By: Claude Opus 5.5 --- sentry-samples/gradle.properties | 14 +--- .../gradle/gradle-daemon-jvm.properties | 1 + sentry-samples/gradle/wrapper | 1 + sentry-samples/gradlew | 1 + sentry-samples/settings.gradle.kts | 72 ++++++++----------- 5 files changed, 35 insertions(+), 54 deletions(-) mode change 100644 => 120000 sentry-samples/gradle.properties create mode 120000 sentry-samples/gradle/gradle-daemon-jvm.properties create mode 120000 sentry-samples/gradle/wrapper create mode 120000 sentry-samples/gradlew diff --git a/sentry-samples/gradle.properties b/sentry-samples/gradle.properties deleted file mode 100644 index d4b4b304bdc..00000000000 --- a/sentry-samples/gradle.properties +++ /dev/null @@ -1,13 +0,0 @@ -# Gradle properties are per build, so this repeats what the samples need from the SDK build's -# gradle.properties. settings.gradle.kts reads the SDK version from that file. - -org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=2g -XX:+CrashOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGC -org.gradle.caching=true -org.gradle.parallel=true -org.gradle.configureondemand=true -org.gradle.configuration-cache=true -org.gradle.configuration-cache.parallel=true - -kotlin.stdlib.default.dependency=false - -systemProp.org.gradle.internal.http.socketTimeout=120000 diff --git a/sentry-samples/gradle.properties b/sentry-samples/gradle.properties new file mode 120000 index 00000000000..7677fb73be8 --- /dev/null +++ b/sentry-samples/gradle.properties @@ -0,0 +1 @@ +../gradle.properties \ No newline at end of file diff --git a/sentry-samples/gradle/gradle-daemon-jvm.properties b/sentry-samples/gradle/gradle-daemon-jvm.properties new file mode 120000 index 00000000000..284e270637d --- /dev/null +++ b/sentry-samples/gradle/gradle-daemon-jvm.properties @@ -0,0 +1 @@ +../../gradle/gradle-daemon-jvm.properties \ No newline at end of file diff --git a/sentry-samples/gradle/wrapper b/sentry-samples/gradle/wrapper new file mode 120000 index 00000000000..3232fe4e272 --- /dev/null +++ b/sentry-samples/gradle/wrapper @@ -0,0 +1 @@ +../../gradle/wrapper \ No newline at end of file diff --git a/sentry-samples/gradlew b/sentry-samples/gradlew new file mode 120000 index 00000000000..502f5a2d3ec --- /dev/null +++ b/sentry-samples/gradlew @@ -0,0 +1 @@ +../gradlew \ No newline at end of file diff --git a/sentry-samples/settings.gradle.kts b/sentry-samples/settings.gradle.kts index 91b8060ec4b..97ee6f59fb4 100644 --- a/sentry-samples/settings.gradle.kts +++ b/sentry-samples/settings.gradle.kts @@ -12,7 +12,7 @@ pluginManagement { } plugins { - id("com.gradle.develocity") version "4.5.0" + id("com.gradle.develocity") version "4.6.1" id("com.gradle.common-custom-user-data-gradle-plugin") version "2.8.0" } @@ -23,15 +23,6 @@ develocity { } } -// Gradle reads gradle.properties only for the build it belongs to, so read the SDK version from the -// SDK build's file. -val sentryVersion: String = - providers - .fileContents(layout.settingsDirectory.file("../gradle.properties")) - .asText - .map { java.util.Properties().apply { load(it.reader()) }.getProperty("versionName") } - .get() - dependencyResolutionManagement { repositories { mavenCentral() @@ -40,7 +31,8 @@ dependencyResolutionManagement { versionCatalogs { create("libs") { from(files("../gradle/libs.versions.toml")) - version("sentry", sentryVersion) + // gradle.properties links to the SDK build's, so versionName is the SDK version. + version("sentry", providers.gradleProperty("versionName").get()) } } } @@ -52,33 +44,31 @@ includeBuild("..") // For the io.sentry.spotless and io.sentry.jdk-target convention plugins. includeBuild("../build-logic") -include( - "sentry-samples-console", - "sentry-samples-console-opentelemetry-noagent", - "sentry-samples-console-otlp", - "sentry-samples-jul", - "sentry-samples-ktor-client", - "sentry-samples-log4j2", - "sentry-samples-logback", - "sentry-samples-netflix-dgs", - "sentry-samples-openfeign", - "sentry-samples-servlet", - "sentry-samples-spring", - "sentry-samples-spring-7", - "sentry-samples-spring-boot", - "sentry-samples-spring-boot-4", - "sentry-samples-spring-boot-4-log4j2", - "sentry-samples-spring-boot-4-opentelemetry", - "sentry-samples-spring-boot-4-opentelemetry-noagent", - "sentry-samples-spring-boot-4-otlp", - "sentry-samples-spring-boot-4-webflux", - "sentry-samples-spring-boot-jakarta", - "sentry-samples-spring-boot-jakarta-log4j2", - "sentry-samples-spring-boot-jakarta-opentelemetry", - "sentry-samples-spring-boot-jakarta-opentelemetry-noagent", - "sentry-samples-spring-boot-opentelemetry", - "sentry-samples-spring-boot-opentelemetry-noagent", - "sentry-samples-spring-boot-webflux", - "sentry-samples-spring-boot-webflux-jakarta", - "sentry-samples-spring-jakarta", -) +include("sentry-samples-console") +include("sentry-samples-console-opentelemetry-noagent") +include("sentry-samples-console-otlp") +include("sentry-samples-jul") +include("sentry-samples-ktor-client") +include("sentry-samples-log4j2") +include("sentry-samples-logback") +include("sentry-samples-netflix-dgs") +include("sentry-samples-openfeign") +include("sentry-samples-servlet") +include("sentry-samples-spring") +include("sentry-samples-spring-7") +include("sentry-samples-spring-boot") +include("sentry-samples-spring-boot-4") +include("sentry-samples-spring-boot-4-log4j2") +include("sentry-samples-spring-boot-4-opentelemetry") +include("sentry-samples-spring-boot-4-opentelemetry-noagent") +include("sentry-samples-spring-boot-4-otlp") +include("sentry-samples-spring-boot-4-webflux") +include("sentry-samples-spring-boot-jakarta") +include("sentry-samples-spring-boot-jakarta-log4j2") +include("sentry-samples-spring-boot-jakarta-opentelemetry") +include("sentry-samples-spring-boot-jakarta-opentelemetry-noagent") +include("sentry-samples-spring-boot-opentelemetry") +include("sentry-samples-spring-boot-opentelemetry-noagent") +include("sentry-samples-spring-boot-webflux") +include("sentry-samples-spring-boot-webflux-jakarta") +include("sentry-samples-spring-jakarta") From 1105e836c984f0a3fd4140b2ad528e002a7f6b16 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Thu, 5 Nov 2026 18:20:03 +0100 Subject: [PATCH 3/8] build(samples): Apply the convention plugins in each JVM sample Each sample applies io.sentry.spotless and io.sentry.jdk-target in its own plugins block, as the modules of the other separate builds do, instead of the root script applying them to every subproject. Co-Authored-By: Claude Opus 5.5 --- .cursor/rules/new_module.mdc | 5 +++-- sentry-samples/build.gradle.kts | 5 ----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.cursor/rules/new_module.mdc b/.cursor/rules/new_module.mdc index a190240f7fb..77f8e7367fa 100644 --- a/.cursor/rules/new_module.mdc +++ b/.cursor/rules/new_module.mdc @@ -31,8 +31,9 @@ the release that first ships it. All of the following have to be merged **before 2. Add the module to the include list in `settings.gradle.kts` -If adding a sample, add it to the include list in `sentry-samples/settings.gradle.kts` instead. The -samples are a separate Gradle build that includes the SDK build, so a sample depends on +If adding a sample, add an `include("…")` line for it to `sentry-samples/settings.gradle.kts` +instead, and apply `id("io.sentry.spotless")` and `id("io.sentry.jdk-target")` in its `plugins` +block. The samples are a separate Gradle build that includes the SDK build, so a sample depends on `"io.sentry:sentry-{module-name}:$sentryVersion"` (with `val sentryVersion = libs.versions.sentry.get()`), and Gradle substitutes the SDK's project for it. diff --git a/sentry-samples/build.gradle.kts b/sentry-samples/build.gradle.kts index 378180567e1..c55b9cb7973 100644 --- a/sentry-samples/build.gradle.kts +++ b/sentry-samples/build.gradle.kts @@ -8,8 +8,3 @@ plugins { id("io.sentry.spotless") apply false id("io.sentry.jdk-target") apply false } - -subprojects { - apply(plugin = "io.sentry.spotless") - apply(plugin = "io.sentry.jdk-target") -} From 6ac3ce5ebd5f94402e435ea69028cedfddc58711 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Thu, 5 Nov 2026 18:20:03 +0100 Subject: [PATCH 4/8] ci(samples): Check the JVM samples in the Samples workflow The JVM samples' check runs as its own job in the Samples workflow, like the other separate builds, instead of through checkSamples in make preMerge, so it no longer lengthens the required Build job. Dependabot scans their build too. Co-Authored-By: Claude Opus 5.5 --- .github/dependabot.yml | 1 + .github/workflows/samples.yml | 2 ++ Makefile | 8 ++------ 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 8e712646a1e..d1593330dd3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -12,6 +12,7 @@ updates: - "/" - "/sentry-samples/sentry-samples-android" - "/sentry-android-integration-tests" + - "/sentry-samples" registries: - gradle-plugin-portal schedule: diff --git a/.github/workflows/samples.yml b/.github/workflows/samples.yml index c0376a85328..08ba64660e4 100644 --- a/.github/workflows/samples.yml +++ b/.github/workflows/samples.yml @@ -24,6 +24,8 @@ jobs: path: sentry-samples/sentry-samples-android - name: sentry-android-integration-tests path: sentry-android-integration-tests + - name: sentry-samples + path: sentry-samples steps: - name: Checkout Repo diff --git a/Makefile b/Makefile index fe1f3c5c9f0..562eec68140 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ -.PHONY: all clean compile javadocs dryRelease update format checkFormat api assembleUiTestRelease assembleUiTestCriticalRelease runUiTestCritical check checkSamples preMerge publish +.PHONY: all clean compile javadocs dryRelease update format checkFormat api assembleUiTestRelease assembleUiTestCriticalRelease runUiTestCritical check preMerge publish all: stop clean javadocs compile assembleUiTests: assembleUiTestRelease -preMerge: check checkSamples +preMerge: check publish: clean dryRelease # deep clean @@ -58,7 +58,3 @@ runUiTestCritical: # Run tests and lint check: ./gradlew check - -# The samples are separate builds, so the root `check` doesn't reach them -checkSamples: - ./gradlew -p sentry-samples check From 6358c9685675a8b0fa9e3596402204efa4bfeb55 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Thu, 5 Nov 2026 18:20:03 +0100 Subject: [PATCH 5/8] build: Drop the root's Spring dependency-management declaration With the JVM samples in their own build, no project in the SDK build applies io.spring.dependency-management. Co-Authored-By: Claude Opus 5.5 --- build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index ea749c55d4e..ed939bea272 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,7 +17,6 @@ plugins { alias(libs.plugins.kotlin.compose) apply false alias(libs.plugins.errorprone) apply false alias(libs.plugins.gradle.versions) apply false - alias(libs.plugins.spring.dependency.management) apply false id("io.sentry.javadoc.aggregate") alias(libs.plugins.android.application) apply false } From 3f50d55c6e14e11e1b69e902746247e5c60f941c Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Thu, 5 Nov 2026 18:31:37 +0100 Subject: [PATCH 6/8] build(samples): Drop the comment on the JVM samples' root plugins Co-Authored-By: Claude Opus 5.5 --- sentry-samples/build.gradle.kts | 2 -- 1 file changed, 2 deletions(-) diff --git a/sentry-samples/build.gradle.kts b/sentry-samples/build.gradle.kts index c55b9cb7973..3a344b8e8d2 100644 --- a/sentry-samples/build.gradle.kts +++ b/sentry-samples/build.gradle.kts @@ -1,5 +1,3 @@ -// Loads the shared plugins once for every sample, so they all share one classpath. The Spring Boot -// plugin is applied in each sample instead, because the samples use different versions of it. plugins { alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlin.spring) apply false From 48391c4664127d5c8a849c3e4788006679e2e3aa Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Thu, 5 Nov 2026 18:33:03 +0100 Subject: [PATCH 7/8] build(samples): Drop the header comment from the JVM samples' settings Co-Authored-By: Claude Opus 5.5 --- sentry-samples/settings.gradle.kts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sentry-samples/settings.gradle.kts b/sentry-samples/settings.gradle.kts index 97ee6f59fb4..ad2fe3e3db6 100644 --- a/sentry-samples/settings.gradle.kts +++ b/sentry-samples/settings.gradle.kts @@ -1,9 +1,3 @@ -// A standalone build that includes the SDK build, so the samples depend on the SDK through the same -// io.sentry:* coordinates an app would, and Gradle substitutes the SDK's projects for them. -// The SDK build doesn't include this one back, so the samples' plugins and versions stay out of -// the SDK build. Run it with `./gradlew -p sentry-samples `. -// sentry-samples-android is a separate build of its own. - pluginManagement { repositories { mavenCentral() From dce50b03fd7a31460ad07d117907390cee4d9fde Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Fri, 6 Nov 2026 16:04:10 +0100 Subject: [PATCH 8/8] build(samples): Declare the servlet sample's SDK version before using it The dependencies block read sentryVersion before its declaration ran, so the sample asked for io.sentry:sentry-servlet:null. The composite build substitutes the SDK project by group and name, which hid it, but resolving published artifacts would fail. Co-Authored-By: Claude Opus 5.5 --- sentry-samples/sentry-samples-servlet/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sentry-samples/sentry-samples-servlet/build.gradle.kts b/sentry-samples/sentry-samples-servlet/build.gradle.kts index 760fbe87f20..5cc8a7e0a4f 100644 --- a/sentry-samples/sentry-samples-servlet/build.gradle.kts +++ b/sentry-samples/sentry-samples-servlet/build.gradle.kts @@ -4,6 +4,8 @@ plugins { id("io.sentry.jdk-target") } +val sentryVersion = libs.versions.sentry.get() + group = "io.sentry.sample.servlet" version = "0.0.1-SNAPSHOT" @@ -17,6 +19,4 @@ dependencies { implementation("javax.servlet:javax.servlet-api:4.0.1") } -val sentryVersion = libs.versions.sentry.get() - tasks.withType().configureEach { useJUnitPlatform() }