Gradle buildSrcVersions v0.20.0 Release Notes

Release Date: 2021-08-23 // about 2 months ago
  • Announcement

    We are now ready to accept dependency notation contributions for high-quality and popular dependencies from the Kotlin ecosystem!

    โšก๏ธ Look for issues with the Dependency notations and up-for-grabs tags to find one you can directly contribute to, or submit a new issue to ask for a new one to be added. We updated the contributing guide on the website, it now has [a guide dedicated to it here](docs/contributing/submitting-prs/dependency-notations-updates.md).

    ๐Ÿ†• New features

    • ๐Ÿšš refreshVersions will now add ## unused comments on top of unused entries in the versions.properties file after you run the refreshVersions task, so you know which ones are obsolete and can be removed.
    • The new rejectVersionsIf { โ€ฆ } predicate available in the refreshVersions { โ€ฆ } extension in your settings.gradle[.kts] file will allow you to filter any kind of versions you don't want to know about. It can be handy to filter snapshots out for example.
    • Most of our dependency notations now provide more flexibility with 3 new extension functions: withVersionPlaceholder(), withVersion(โ€ฆ), and withoutVersion().

    ๐Ÿ”„ Change (potentially breaking)

    • ๐Ÿ— If you use a BoM from the built-in dependency notations, it must always appear before dependencies from the group it controls, or you'll see an error message that will fail the Gradle build. We do this because we can't switch on usage of the BoM for linked dependencies that have already been evaluated by Gradle.

    ๐Ÿ‘Œ Improvements

    The refreshVersionsMigrate will now use the built-in dependency notations if they match existing dependencies.

    ๐Ÿ†• New dependency notations:

    • AndroidX:
      • benchmark.macroJunit4
      • core.splashscreen
      • games:
        • activity
        • controller
        • framePacing
        • performanceTuner
        • textInput
      • navigation.testing
      • wear.compose:
        • foundation
        • material
      • window
        • java
        • rxJava2
        • rxJava3
        • testing
    • COIL:
      • compose
      • composeBase
    • Firebase:
      • cloudMessagingDirectBoot
      • Firebase.mlModelDownloaderKtx
      • Firebase.mlModelDownloader
    • Kodein.di (new group with many dependencies)
    • โœ… Kotlin.test (which is compatible with multiplatform projects since Kotlin 1.5)
    • KotlinX.html (compatible with multiplatform projects)
    • Ktor.features.serialization
    • Http4k (new group with many dependencies)
    • Splitties.alertdialogMaterial
    • Square
      • okHttp3.bom
      • okHttp3 (shortcut to existing okHttp3.okHttp)
      • retrofit2.converter.wire
      • retrofit2 (shortcut to existing retrofit2.retrofit)
    • Spring (new group with many dependencies)

Previous changes from v0.11.0

  • ๐Ÿ†• New feature

    Add task refreshVersionsMigrate that adds all missing entries in versions.properties and try to migrate the build.gradle(.kts) and other known files like libraries.gradle so that the version placeholder _ is used everywhere. Please try it out and give us your feedback for refreshVersionsMigrate

    ๐Ÿ›  Fixes

    • ๐Ÿ”Œ Plugins org.jetbrains.kotlinx.benchmark should not use key version.kotlin

    ๐Ÿ†• New dependency notations

    • Ktor.features.serialization
    • โœ… AndroidX.navigation.testing
    • โœ… Testing.kotestExtensions who replaces Testing.kotest.extensions in Kotest >= 4.5.0