Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@

### Behavioral Changes

- Gradle builds now resolve all Sentry SDK modules to the same version, the highest one present, because every module depends on `sentry-bom` as a platform ([#6466](https://github.com/getsentry/sentry-java/pull/6466))
- Before, a build could mix module versions, for example a newer `sentry-android-core` with an older `sentry-android-fragment`, which failed at runtime. Maven builds resolve as before.
- `sentry-bom` now also includes `sentry-android-distribution`.
- Idle spans, including those produced by `SentryTraced`, now let any idle parent transaction finish after the idle timeout (3s by default) with status `ok`, rather than waiting for the deadline (30s by default) and reporting `deadline_exceeded` ([#6396](https://github.com/getsentry/sentry-java/pull/6396))
- If you use `SentryTraced`, expect shorter durations and lower failure rates for affected `ui.load` and navigation transactions, plus changes to metrics measured over the transaction's lifetime, such as slow and frozen frames.
- Cold and warm app start, TTID, and TTFD remain unchanged.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ import org.gradle.kotlin.dsl.configure
class SentryPublishPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.configurePublishing(DistributionContainer::configureForJvm)
// the BOMs are java-platform projects, so they do not depend on themselves
project.plugins.withId("java-library") { project.alignWithBom("api") }
project.plugins.withId("com.android.library") { project.alignWithBom("api") }
}
}

Expand All @@ -26,9 +29,21 @@ class SentryPublishPlugin : Plugin<Project> {
class SentryMultiplatformPublishPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.configurePublishing(DistributionContainer::configureForMultiplatform)
project.plugins.withId("org.jetbrains.kotlin.multiplatform") {
project.alignWithBom("commonMainApi")
}
}
}

/**
* With sentry-bom as a platform, Gradle resolves all SDK modules of a consumer to one version, the
* highest one present.
*/
private fun Project.alignWithBom(configuration: String) {
val bom = dependencies.project(mapOf("path" to ":sentry-bom"))
dependencies.add(configuration, dependencies.platform(bom))
}

private fun Project.configurePublishing(
configureDistributions: DistributionContainer.(Project) -> Unit
) {
Expand Down
3 changes: 1 addition & 2 deletions sentry-bom/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ dependencies {
!it.name.startsWith("sentry-samples") &&
it.name != project.name &&
!it.name.endsWith("-bom") &&
!it.name.contains("test", ignoreCase = true) &&
!it.name.contains("sentry-android-distribution")
!it.name.contains("test", ignoreCase = true)
}
.forEach { project ->
evaluationDependsOn(project.path)
Expand Down
Loading