diff --git a/.cursor/rules/api.mdc b/.cursor/rules/api.mdc index 9435bc2590f..3dab5215368 100644 --- a/.cursor/rules/api.mdc +++ b/.cursor/rules/api.mdc @@ -6,7 +6,7 @@ description: Public API surface, binary compatibility, and common classes to mod ## API Compatibility -Public API is tracked via `.api` files generated by the [Binary Compatibility Validator](https://github.com/Kotlin/binary-compatibility-validator) Gradle plugin. Each module has its own file at `/api/.api`. +Public API is tracked via `.api` files generated by the [ABI validation](https://kotlinlang.org/docs/gradle-binary-compatibility-validation.html) built into the Kotlin Gradle plugin. Each module has its own file at `/api/.api`. - **Never edit `.api` files manually.** Run `./gradlew apiDump` to regenerate them. - `./gradlew check` validates current code against `.api` files and fails on unintended changes. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 79800a6ff2b..0a664b78e01 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -77,7 +77,7 @@ or # Binary compatibility validation -To prevent breaking ABI changes and exposing things we should not, we make use of https://github.com/Kotlin/binary-compatibility-validator. If your change intended to introduce a new public method/property or modify the existing one you can overwrite the API declarations to make CI happy as follows (overwrites them from scratch): +To prevent breaking ABI changes and exposing things we should not, we make use of https://kotlinlang.org/docs/gradle-binary-compatibility-validation.html. If your change intended to introduce a new public method/property or modify the existing one you can overwrite the API declarations to make CI happy as follows (overwrites them from scratch): ```shell make api diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 60a340c9b85..385d1b08386 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -16,6 +16,10 @@ gradlePlugin { id = "io.sentry.jdk-target" implementationClass = "io.sentry.gradle.JdkTargetConvention" } + register("sentryApiValidation") { + id = "io.sentry.api-validation" + implementationClass = "io.sentry.gradle.SentryApiValidationPlugin" + } register("sentryAnimalSniffer") { id = "io.sentry.animalsniffer" implementationClass = "io.sentry.gradle.SentryAnimalSnifferPlugin" diff --git a/build-logic/src/main/kotlin/io/sentry/gradle/ApiValidationExtension.kt b/build-logic/src/main/kotlin/io/sentry/gradle/ApiValidationExtension.kt new file mode 100644 index 00000000000..7f46dc2acd7 --- /dev/null +++ b/build-logic/src/main/kotlin/io/sentry/gradle/ApiValidationExtension.kt @@ -0,0 +1,12 @@ +package io.sentry.gradle + +import org.gradle.api.provider.SetProperty + +/** Configuration for the `io.sentry.api-validation` convention plugin. */ +abstract class ApiValidationExtension { + /** + * Packages that are public to the JVM but not part of the SDK's API, and so are left out of the + * dump. Subpackages are left out too. + */ + abstract val ignoredPackages: SetProperty +} diff --git a/build-logic/src/main/kotlin/io/sentry/gradle/SentryApiValidationPlugin.kt b/build-logic/src/main/kotlin/io/sentry/gradle/SentryApiValidationPlugin.kt new file mode 100644 index 00000000000..b0dd8bcbea0 --- /dev/null +++ b/build-logic/src/main/kotlin/io/sentry/gradle/SentryApiValidationPlugin.kt @@ -0,0 +1,53 @@ +package io.sentry.gradle + +import org.gradle.api.GradleException +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.plugins.ExtensionAware +import org.gradle.kotlin.dsl.create +import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationExtension +import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationMultiplatformExtension +import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationVariantSpec +import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation + +private val KOTLIN_PLUGIN_IDS = + listOf( + "org.jetbrains.kotlin.jvm", + "org.jetbrains.kotlin.android", + "org.jetbrains.kotlin.multiplatform", + ) + +/** + * Checks the public ABI of a module against the dump checked into its `api` directory, using the + * Kotlin Gradle plugin's own ABI validation. Adds `checkKotlinAbi`, which `check` depends on, and + * `updateKotlinAbi`, which rewrites the dump. + */ +@OptIn(ExperimentalAbiValidation::class) +class SentryApiValidationPlugin : Plugin { + override fun apply(project: Project) { + val extension = project.extensions.create("sentryApiValidation") + + // The abiValidation extension only exists once a Kotlin plugin has been applied, and a module + // may list this plugin before that one. + KOTLIN_PLUGIN_IDS.forEach { + project.pluginManager.withPlugin(it) { enable(project, extension) } + } + + // Aliases for backwards compat with the old binary-compatibility-validator plugin. + project.tasks.register("apiDump") { dependsOn("updateKotlinAbi") } + project.tasks.register("apiCheck") { dependsOn("checkKotlinAbi") } + } + + private fun enable(project: Project, extension: ApiValidationExtension) { + val kotlin = project.extensions.getByName("kotlin") as ExtensionAware + val spec: AbiValidationVariantSpec = + when (val abi = kotlin.extensions.getByName("abiValidation")) { + is AbiValidationMultiplatformExtension -> abi.also { it.enabled.set(true) } + is AbiValidationExtension -> abi.also { it.enabled.set(true) } + else -> throw GradleException("Unexpected abiValidation extension: ${abi.javaClass.name}") + } + // Lazy, because the module configures the extension after this plugin has been applied. + val ignored = extension.ignoredPackages.map { packages -> packages.map { "$it.**" } } + spec.filters { exclude { byNames.addAll(ignored) } } + } +} diff --git a/build.gradle.kts b/build.gradle.kts index 3ed35d2da82..92dc6898bff 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,7 +11,6 @@ plugins { alias(libs.plugins.spotless) apply false alias(libs.plugins.detekt) `maven-publish` - alias(libs.plugins.binary.compatibility.validator) alias(libs.plugins.vanniktech.maven.publish) apply false alias(libs.plugins.kotlin.android) apply false alias(libs.plugins.kotlin.multiplatform) apply false @@ -29,6 +28,10 @@ plugins { alias(libs.plugins.sentry) apply false } +check(JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_21)) { + "This build requires JDK 21 or newer, but runs on JDK ${JavaVersion.current()}." +} + buildscript { repositories { google() @@ -43,51 +46,6 @@ buildscript { } } -apiValidation { - ignoredPackages.addAll( - setOf( - "io.sentry.android.core.internal" - ) - ) - ignoredProjects.addAll( - listOf( - "sentry-samples-android", - "sentry-samples-console", - "sentry-samples-console-opentelemetry-noagent", - "sentry-samples-jul", - "sentry-samples-log4j2", - "sentry-samples-logback", - "sentry-samples-openfeign", - "sentry-samples-servlet", - "sentry-samples-spring", - "sentry-samples-spring-jakarta", - "sentry-samples-spring-7", - "sentry-samples-spring-boot", - "sentry-samples-spring-boot-opentelemetry", - "sentry-samples-spring-boot-opentelemetry-noagent", - "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-webflux", - "sentry-samples-spring-boot-webflux-jakarta", - "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-ktor-client", - "sentry-uitest-android", - "sentry-uitest-android-critical", - "test-app-size", - "sentry-samples-netflix-dgs", - "sentry-samples-console-otlp", - "sentry-test-support" - ) - ) -} - allprojects { group = Config.Sentry.group version = providers.gradleProperty(Config.Sentry.versionNameProp).get() @@ -121,7 +79,7 @@ subprojects { } } - if (!this.name.contains("sample") && !this.name.contains("integration-tests") && this.name != "sentry-test-support") { + if (!this.name.contains("sample") && !this.name.contains("integration-tests") && this.name != "sentry-system-test-support" && this.name != "sentry-test-support") { apply() apply() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7cbe8e626c8..66aeb418ce6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -68,7 +68,6 @@ ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } buildconfig = { id = "com.github.gmazzo.buildconfig", version = "5.6.5" } dokka = { id = "org.jetbrains.dokka", version = "2.0.0" } dokka-javadoc = { id = "org.jetbrains.dokka-javadoc", version = "2.0.0" } -binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version = "0.13.0" } errorprone = { id = "net.ltgt.errorprone", version = "5.1.1" } gradle-versions = { id = "com.github.ben-manes.versions", version = "0.42.0" } spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } diff --git a/sentry-android-core/build.gradle.kts b/sentry-android-core/build.gradle.kts index 4facf6f4c23..f78dd0c036b 100644 --- a/sentry-android-core/build.gradle.kts +++ b/sentry-android-core/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kotlin.compose) alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } android { @@ -135,3 +136,5 @@ dependencies { testRuntimeOnly(libs.androidx.fragment.ktx) testRuntimeOnly(libs.timber) } + +sentryApiValidation { ignoredPackages.add("io.sentry.android.core.internal") } diff --git a/sentry-android-distribution/build.gradle.kts b/sentry-android-distribution/build.gradle.kts index 074d56c08e6..69c9e3ccada 100644 --- a/sentry-android-distribution/build.gradle.kts +++ b/sentry-android-distribution/build.gradle.kts @@ -5,6 +5,7 @@ plugins { id("com.android.library") alias(libs.plugins.kotlin.android) alias(libs.plugins.detekt) + id("io.sentry.api-validation") } android { diff --git a/sentry-android-fragment/build.gradle.kts b/sentry-android-fragment/build.gradle.kts index 3c7a0404970..8a69c231328 100644 --- a/sentry-android-fragment/build.gradle.kts +++ b/sentry-android-fragment/build.gradle.kts @@ -7,6 +7,7 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.gradle.versions) alias(libs.plugins.detekt) + id("io.sentry.api-validation") } android { diff --git a/sentry-android-navigation/build.gradle.kts b/sentry-android-navigation/build.gradle.kts index ddc6d6f4161..c91426649d1 100644 --- a/sentry-android-navigation/build.gradle.kts +++ b/sentry-android-navigation/build.gradle.kts @@ -7,6 +7,7 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.gradle.versions) alias(libs.plugins.detekt) + id("io.sentry.api-validation") } android { diff --git a/sentry-android-navigation3/build.gradle.kts b/sentry-android-navigation3/build.gradle.kts index 9612fded9d6..95462ad61f1 100644 --- a/sentry-android-navigation3/build.gradle.kts +++ b/sentry-android-navigation3/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kotlin.compose) alias(libs.plugins.gradle.versions) alias(libs.plugins.detekt) + id("io.sentry.api-validation") } android { diff --git a/sentry-android-ndk/build.gradle.kts b/sentry-android-ndk/build.gradle.kts index dff85906ca1..c61678be0cb 100644 --- a/sentry-android-ndk/build.gradle.kts +++ b/sentry-android-ndk/build.gradle.kts @@ -4,6 +4,7 @@ plugins { id("com.android.library") alias(libs.plugins.kotlin.android) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } android { diff --git a/sentry-android-replay/build.gradle.kts b/sentry-android-replay/build.gradle.kts index 1a92f9a0b36..6fff59a0c41 100644 --- a/sentry-android-replay/build.gradle.kts +++ b/sentry-android-replay/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.kotlin.compose) alias(libs.plugins.gradle.versions) alias(libs.plugins.detekt) + id("io.sentry.api-validation") } android { diff --git a/sentry-android-sqlite/build.gradle.kts b/sentry-android-sqlite/build.gradle.kts index 38ea832082f..e01b3dbd4a0 100644 --- a/sentry-android-sqlite/build.gradle.kts +++ b/sentry-android-sqlite/build.gradle.kts @@ -7,6 +7,7 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.gradle.versions) alias(libs.plugins.detekt) + id("io.sentry.api-validation") } android { diff --git a/sentry-android-timber/build.gradle.kts b/sentry-android-timber/build.gradle.kts index 92f14b37c8c..b2f09450d9d 100644 --- a/sentry-android-timber/build.gradle.kts +++ b/sentry-android-timber/build.gradle.kts @@ -7,6 +7,7 @@ plugins { alias(libs.plugins.kotlin.android) alias(libs.plugins.gradle.versions) alias(libs.plugins.detekt) + id("io.sentry.api-validation") } android { diff --git a/sentry-apache-http-client-5/build.gradle.kts b/sentry-apache-http-client-5/build.gradle.kts index 06c5f839f95..7cef8834444 100644 --- a/sentry-apache-http-client-5/build.gradle.kts +++ b/sentry-apache-http-client-5/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } kotlin { diff --git a/sentry-apollo-3/build.gradle.kts b/sentry-apollo-3/build.gradle.kts index ae8721b22b2..2750eec5fde 100644 --- a/sentry-apollo-3/build.gradle.kts +++ b/sentry-apollo-3/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer.android") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-apollo-4/build.gradle.kts b/sentry-apollo-4/build.gradle.kts index 63c8b5431c6..04cb6b12f10 100644 --- a/sentry-apollo-4/build.gradle.kts +++ b/sentry-apollo-4/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer.android") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-apollo-5/build.gradle.kts b/sentry-apollo-5/build.gradle.kts index 2d78dff8fa1..40de399fd30 100644 --- a/sentry-apollo-5/build.gradle.kts +++ b/sentry-apollo-5/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer.android") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-apollo/build.gradle.kts b/sentry-apollo/build.gradle.kts index 72a183bb7b3..e489f64269f 100644 --- a/sentry-apollo/build.gradle.kts +++ b/sentry-apollo/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer.android") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-async-profiler/build.gradle.kts b/sentry-async-profiler/build.gradle.kts index fbb4a8fc353..f02de255bd4 100644 --- a/sentry-async-profiler/build.gradle.kts +++ b/sentry-async-profiler/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-compose/build.gradle.kts b/sentry-compose/build.gradle.kts index 19fce9f95b5..befdf01e678 100644 --- a/sentry-compose/build.gradle.kts +++ b/sentry-compose/build.gradle.kts @@ -12,6 +12,7 @@ plugins { alias(libs.plugins.dokka) alias(libs.plugins.dokka.javadoc) `maven-publish` // necessary for publishMavenLocal task to publish correct artifacts + id("io.sentry.api-validation") } kotlin { diff --git a/sentry-graphql-22/build.gradle.kts b/sentry-graphql-22/build.gradle.kts index 9da6bcc1e36..b0ebeb2a37a 100644 --- a/sentry-graphql-22/build.gradle.kts +++ b/sentry-graphql-22/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-graphql-core/build.gradle.kts b/sentry-graphql-core/build.gradle.kts index df0496f070e..af4c988bce4 100644 --- a/sentry-graphql-core/build.gradle.kts +++ b/sentry-graphql-core/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-graphql/build.gradle.kts b/sentry-graphql/build.gradle.kts index 25613e1fdd6..da4a35021e2 100644 --- a/sentry-graphql/build.gradle.kts +++ b/sentry-graphql/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-jcache/build.gradle.kts b/sentry-jcache/build.gradle.kts index b773c42c340..52b71618cf5 100644 --- a/sentry-jcache/build.gradle.kts +++ b/sentry-jcache/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-jdbc/build.gradle.kts b/sentry-jdbc/build.gradle.kts index 9d0aa1596fe..8fa8130edaa 100644 --- a/sentry-jdbc/build.gradle.kts +++ b/sentry-jdbc/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-jul/build.gradle.kts b/sentry-jul/build.gradle.kts index 451cbf1991b..934be2d203f 100644 --- a/sentry-jul/build.gradle.kts +++ b/sentry-jul/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-kafka/build.gradle.kts b/sentry-kafka/build.gradle.kts index eb293ada057..36f66d60c9b 100644 --- a/sentry-kafka/build.gradle.kts +++ b/sentry-kafka/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-kotlin-extensions/build.gradle.kts b/sentry-kotlin-extensions/build.gradle.kts index ded17d445e7..d8941b1088a 100644 --- a/sentry-kotlin-extensions/build.gradle.kts +++ b/sentry-kotlin-extensions/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.detekt) id("io.sentry.animalsniffer.android") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-ktor-client/build.gradle.kts b/sentry-ktor-client/build.gradle.kts index 28edd1689e0..a28c11eab8d 100644 --- a/sentry-ktor-client/build.gradle.kts +++ b/sentry-ktor-client/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer.android") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-launchdarkly-android/build.gradle.kts b/sentry-launchdarkly-android/build.gradle.kts index df081b21213..cf99b017db0 100644 --- a/sentry-launchdarkly-android/build.gradle.kts +++ b/sentry-launchdarkly-android/build.gradle.kts @@ -2,6 +2,7 @@ plugins { id("com.android.library") alias(libs.plugins.kotlin.android) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } android { diff --git a/sentry-launchdarkly-server/build.gradle.kts b/sentry-launchdarkly-server/build.gradle.kts index f2ed3d15742..6368731ad78 100644 --- a/sentry-launchdarkly-server/build.gradle.kts +++ b/sentry-launchdarkly-server/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-log4j2/build.gradle.kts b/sentry-log4j2/build.gradle.kts index 68cdaa9b726..39d75e53fa0 100644 --- a/sentry-log4j2/build.gradle.kts +++ b/sentry-log4j2/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-logback/build.gradle.kts b/sentry-logback/build.gradle.kts index 48f84725a78..b5854279987 100644 --- a/sentry-logback/build.gradle.kts +++ b/sentry-logback/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-okhttp/build.gradle.kts b/sentry-okhttp/build.gradle.kts index 0b3e2388415..bdc04b8d2b9 100644 --- a/sentry-okhttp/build.gradle.kts +++ b/sentry-okhttp/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer.android") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-openfeature/build.gradle.kts b/sentry-openfeature/build.gradle.kts index 6750e22e61c..9d07106806b 100644 --- a/sentry-openfeature/build.gradle.kts +++ b/sentry-openfeature/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-openfeign/build.gradle.kts b/sentry-openfeign/build.gradle.kts index 209e5c34e54..b1a09d5eae4 100644 --- a/sentry-openfeign/build.gradle.kts +++ b/sentry-openfeign/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts index b4b1a8b840d..4580dceeed4 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts @@ -8,6 +8,7 @@ plugins { id("io.sentry.javadoc") alias(libs.plugins.kotlin.jvm) alias(libs.plugins.shadow) + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts index 3390f2695c8..79ddbc77d7e 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts index 32d029746c1..1a12e5c4336 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts @@ -6,6 +6,7 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts index 28a1b030e15..af03e26b222 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts index 1c1e7f984ba..265c99ad639 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-opentelemetry/sentry-opentelemetry-otlp/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-otlp/build.gradle.kts index fb95d722d6f..1a928ca8701 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-otlp/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-otlp/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-quartz/build.gradle.kts b/sentry-quartz/build.gradle.kts index b5387daf207..d8ede48f169 100644 --- a/sentry-quartz/build.gradle.kts +++ b/sentry-quartz/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-reactor/build.gradle.kts b/sentry-reactor/build.gradle.kts index b98eafd028f..403f1c4e6f2 100644 --- a/sentry-reactor/build.gradle.kts +++ b/sentry-reactor/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) + id("io.sentry.api-validation") } // Published code targets Java 17. Test code is not published and follows the toolchain. diff --git a/sentry-samples/sentry-samples-console-otlp/api/sentry-samples-console-otlp.api b/sentry-samples/sentry-samples-console-otlp/api/sentry-samples-console-otlp.api deleted file mode 100644 index 867869223ea..00000000000 --- a/sentry-samples/sentry-samples-console-otlp/api/sentry-samples-console-otlp.api +++ /dev/null @@ -1,5 +0,0 @@ -public class io/sentry/samples/console/Main { - public fun ()V - public static fun main ([Ljava/lang/String;)V -} - diff --git a/sentry-samples/sentry-samples-ktor-client/api/sentry-samples-ktor.api b/sentry-samples/sentry-samples-ktor-client/api/sentry-samples-ktor.api deleted file mode 100644 index cf3a710f94f..00000000000 --- a/sentry-samples/sentry-samples-ktor-client/api/sentry-samples-ktor.api +++ /dev/null @@ -1,6 +0,0 @@ -public final class io/sentry/samples/ktor/MainKt { - public static final fun main ()V - public static synthetic fun main ([Ljava/lang/String;)V - public static final fun makeRequests (Lio/ktor/client/HttpClient;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; -} - diff --git a/sentry-servlet-jakarta/build.gradle.kts b/sentry-servlet-jakarta/build.gradle.kts index b9d6ffc2ec4..8bbc4228552 100644 --- a/sentry-servlet-jakarta/build.gradle.kts +++ b/sentry-servlet-jakarta/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-servlet/build.gradle.kts b/sentry-servlet/build.gradle.kts index 08ac7d45284..cd3a344f759 100644 --- a/sentry-servlet/build.gradle.kts +++ b/sentry-servlet/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-spotlight/build.gradle.kts b/sentry-spotlight/build.gradle.kts index 072cb360e61..f283b1e37b8 100644 --- a/sentry-spotlight/build.gradle.kts +++ b/sentry-spotlight/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) id("io.sentry.animalsniffer.android") alias(libs.plugins.buildconfig) + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-spring-7/build.gradle.kts b/sentry-spring-7/build.gradle.kts index b9d418abe4d..eb920eea82f 100644 --- a/sentry-spring-7/build.gradle.kts +++ b/sentry-spring-7/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) alias(libs.plugins.springboot4) apply false + id("io.sentry.api-validation") } // Published code targets Java 17. Test code is not published and follows the toolchain. diff --git a/sentry-spring-boot-4-starter/build.gradle.kts b/sentry-spring-boot-4-starter/build.gradle.kts index 7ad300d4790..fca672dac9d 100644 --- a/sentry-spring-boot-4-starter/build.gradle.kts +++ b/sentry-spring-boot-4-starter/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) alias(libs.plugins.springboot4) apply false + id("io.sentry.api-validation") } // Published code targets Java 17. Test code is not published and follows the toolchain. diff --git a/sentry-spring-boot-4/build.gradle.kts b/sentry-spring-boot-4/build.gradle.kts index 7f4428551b2..90d40e162de 100644 --- a/sentry-spring-boot-4/build.gradle.kts +++ b/sentry-spring-boot-4/build.gradle.kts @@ -12,6 +12,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) alias(libs.plugins.springboot4) apply false + id("io.sentry.api-validation") } // Published code targets Java 17. Test code is not published and follows the toolchain. diff --git a/sentry-spring-boot-jakarta/build.gradle.kts b/sentry-spring-boot-jakarta/build.gradle.kts index 9451cf95117..be264b890f2 100644 --- a/sentry-spring-boot-jakarta/build.gradle.kts +++ b/sentry-spring-boot-jakarta/build.gradle.kts @@ -11,6 +11,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) alias(libs.plugins.springboot3) apply false + id("io.sentry.api-validation") } // Published code targets Java 17. Test code is not published and follows the toolchain. diff --git a/sentry-spring-boot-starter-jakarta/build.gradle.kts b/sentry-spring-boot-starter-jakarta/build.gradle.kts index 63594df7a2e..92cc97b240c 100644 --- a/sentry-spring-boot-starter-jakarta/build.gradle.kts +++ b/sentry-spring-boot-starter-jakarta/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) alias(libs.plugins.springboot3) apply false + id("io.sentry.api-validation") } // Published code targets Java 17. Test code is not published and follows the toolchain. diff --git a/sentry-spring-boot-starter/build.gradle.kts b/sentry-spring-boot-starter/build.gradle.kts index 641b335becb..54ef6444d34 100644 --- a/sentry-spring-boot-starter/build.gradle.kts +++ b/sentry-spring-boot-starter/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-spring-boot/build.gradle.kts b/sentry-spring-boot/build.gradle.kts index 151d5a829dd..b20f500e64f 100644 --- a/sentry-spring-boot/build.gradle.kts +++ b/sentry-spring-boot/build.gradle.kts @@ -11,6 +11,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry-spring-jakarta/build.gradle.kts b/sentry-spring-jakarta/build.gradle.kts index 701d5a04208..4b5e3b00107 100644 --- a/sentry-spring-jakarta/build.gradle.kts +++ b/sentry-spring-jakarta/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) alias(libs.plugins.springboot3) apply false + id("io.sentry.api-validation") } // Published code targets Java 17. Test code is not published and follows the toolchain. diff --git a/sentry-spring/build.gradle.kts b/sentry-spring/build.gradle.kts index f11087c1b07..9836686857d 100644 --- a/sentry-spring/build.gradle.kts +++ b/sentry-spring/build.gradle.kts @@ -10,6 +10,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer") + id("io.sentry.api-validation") } tasks.named("compileKotlin") { diff --git a/sentry/build.gradle.kts b/sentry/build.gradle.kts index 9cbcf5bf2c0..70f0068a5c3 100644 --- a/sentry/build.gradle.kts +++ b/sentry/build.gradle.kts @@ -9,6 +9,7 @@ plugins { alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) id("io.sentry.animalsniffer.android") + id("io.sentry.api-validation") } tasks.named("compileKotlin") {