Releases: Splitties/refreshVersions
0.60.5
0.60.4
Version 0.60.4 (2024-01-31)
Potentially breaking change
We now support only Gradle 8+. Use Gradle 8+ or stick to version 0.60.3 if you can't yet.
Bug fix
Update the priority of artifact version key rules so that the longest match takes precedence, rather than the final key length.
That should fix the keys of androidx.wear.compose
libraries.
0.60.3
0.60.2
Version 0.60.2 (2023-08-29)
Bug fix
Some version keys were wrongly marked as unused following version 0.60.0. That's now fixed.
Thanks to the reporters and people that helped in reproducing the issue!
Removed dependency notations
Several Accompanist libraries were deprecated following this announcement.
As a result, we updated removed them from refreshVersions.
As usual, it won't break projects because we update the dependency notations with the equivalent string literal.
Also, relevant inline comments with links will be added to assist migration.
New dependency notations
Click to expand (18)
AndroidX.core.performance.playServices
AndroidX.core.performance.testing
CashApp.sqlDelight.drivers.android
CashApp.sqlDelight.extensions.androidPaging3
CashApp.sqlDelight.extensions.coroutines
CashApp.sqlDelight.gradlePlugin
CashApp.sqlDelight.dialects.hSql
CashApp.sqlDelight.drivers.jdbc
CashApp.sqlDelight.dialects.mySql
CashApp.sqlDelight.drivers.native
CashApp.sqlDelight.dialects.postgreSql
CashApp.sqlDelight.extensions.rxJava2
CashApp.sqlDelight.extensions.rxJava3
CashApp.sqlDelight.drivers.jdbcSqlite
CashApp.sqlDelight.drivers.sqlJs
CashApp.sqlDelight.drivers.webWorker
Google.accompanist.adaptive
Google.accompanist.testHarness
0.60.1
Version 0.60.1 (2023-08-24)
Bug fix
- Fix crash on projects that had no version catalog.
New dependency notations:
Click to expand (25)
Google.android.play.appUpdateKtx
Google.android.play.appUpdate
Google.android.play.assetDeliveryKtx
Google.android.play.assetDelivery
Google.android.play.featureDeliveryKtx
Google.android.play.featureDelivery
Google.android.play.reviewKtx
Google.android.play.review
Google.horologist.annotations
Google.horologist.auth.composables
Google.horologist.auth.data.phone
Google.horologist.auth.data.watchOAuth
Google.horologist.auth.data
Google.horologist.auth.ui
Google.horologist.compose.material
Google.horologist.dataLayer.grpc
Google.horologist.dataLayer.phone
Google.horologist.dataLayer.watch
Google.horologist.healthComposables
Google.horologist.media3.audioOffload
Google.horologist.media3.logging
Google.horologist.media3.outputSwitcher
Google.horologist.networkAwareness.db
Google.horologist.networkAwareness.okHttp
Google.horologist.networkAwareness.ui
0.60.0
Version 0.60.0 (2023-08-17)
Full configuration cache support for the refreshVersions
task
Now, running the refreshVersions
task repeatedly will be much faster, because it now supports
configuration cache fully! That also means that it's ready for Gradle 9 when it'll be released.
Bug fixes
- Fix "The root project is not yet available for build." error that would show up when using configuration cache in a project having
refreshVersions
configured for thebuildSrc
too. - For projects using refreshVersions in their
buildSrc
too, a log would claim that new files were created after running therefreshVersions
task, when they were only modified, or not touched at all. We fixed it. - When no files were modified after running the
refreshVersions
task, there would still be a log saying thatversions.properties
andlibs.versions.toml
(if any) were updated or created. Now, it's only shown if there are actual changes. - When running the
refreshVersions
task, it would always claim that some versions were hardcoded as it counted project dependencies. We are now filtering those out, and we updated the wording to reflect that they might not be actually hardcoded, as is the case when versions come from a Gradle plugin. - Fix alignment of available update for versions catalogs for keys that are 3 characters long.
New dependency notations:
Click to expand (57)
AndroidX.appSearch.debugView
AndroidX.appSearch.ktx
AndroidX.benchmark.baselineProfileGradlePlugin
AndroidX.camera.viewFinder
AndroidX.core.i18n
AndroidX.core.locationAltitude
AndroidX.core.telecom
AndroidX.core.testing
AndroidX.credentials.playServicesAuth
AndroidX.credentials
AndroidX.emoji2.picker
AndroidX.glance.material3
AndroidX.glance.material
AndroidX.graphics.path
AndroidX.graphics.shapes
AndroidX.media3.container
AndroidX.media3.effect
AndroidX.media3.muxer
AndroidX.mediaRouter.testing
AndroidX.privacySandbox.plugins.library
AndroidX.privacySandbox.sdkRuntime.client
AndroidX.privacySandbox.sdkRuntime.core
AndroidX.privacySandbox.tools.apiCompiler
AndroidX.privacySandbox.tools.apiGenerator
AndroidX.privacySandbox.tools.apiPackager
AndroidX.privacySandbox.tools.core
AndroidX.privacySandbox.tools
AndroidX.privacySandbox.ui.client
AndroidX.privacySandbox.ui.core
AndroidX.privacySandbox.ui.provider
AndroidX.room.gradlePlugin
AndroidX.tracing.perfetto.handshake
AndroidX.wear.compose.material3
AndroidX.wear.compose.uiTooling
AndroidX.wear.protoLayout.expression
AndroidX.wear.protoLayout.material
AndroidX.wear.protoLayout.renderer
AndroidX.wear.protoLayout
AndroidX.window.extensions.core
Google.android.playServices.deviceToDeviceInteractions
Google.android.playServices.gamesV2.nativeC
Google.android.playServices.gamesV2
Google.android.playServices.matter
Google.android.playServices.mlKit.naturalLanguage.smartReply
Google.android.playServices.mlKit.vision.barcodeScanning.codeScanner
Google.android.playServices.mlKit.vision.textRecognition.chinese
Google.android.playServices.mlKit.vision.textRecognition.devanagari
Google.android.playServices.mlKit.vision.textRecognition.japanese
Google.android.playServices.mlKit.vision.textRecognition.korean
Google.android.playServices.tfLite.accelerationService
Google.android.playServices.tfLite.gpu
Google.android.playServices.tfLite.java
Google.android.playServices.tfLite.support
Google.android.playServices.threadNetwork
Google.mlKit.vision.entityExtraction
Google.mlKit.vision.faceMeshDetection
Kotlin.gradlePlugin
0.51.0
Version 0.51.0 (2022-10-25)
Support Jetpack Compose BoM
Yesterday, Google released a BoM for Jetpack Compose.
Today we're introducing first-class support for it.
To take advantage of it, you just need to add the dependency on platform(AndroidX.compose.bom)
.
Just like Firebase.bom
, make sure you add it before any dependent dependency:
dependencies {
implementation(platform(AndroidX.compose.bom)) // Add this FIRST
implementation(AndroidX.compose.material3) // Related dependencies AFTER
implementation(AndroidX.compose.material3.windowSizeClass) // Same as above
}
In case you need to use a pre-release version (alpha, beta, rc…), use the withVersionPlaceholder()
function as such:
dependencies {
implementation(platform(AndroidX.compose.bom)) // Enables the BoM and depends on it
implementation(AndroidX.compose.icons.extended) // Uses version defined in the BoM
implementation(AndroidX.compose.material3.withVersionPlaceholder()) // Separate version in versions.properties
}
Fix StabilityLevel calculation for number-less pre-versions
Since last changes in the Version class, versions like 1.7.20-RC and 1.7.20-Beta would be marked as stable instead of respectively ReleaseCandidate and Beta because the logic expected a number in all cases.
The number is now optional for all pre-versions, except milestones.
To prevent future recurrence of such regression, this commit
also adds tests that assert the expected stability level of
many known versions from various libraries.
New dependency notations:
Click to expand (11)
AndroidX.asyncLayoutInflater.appcompat
AndroidX.compose.bom
AndroidX.dataStore.core.okio
AndroidX.graphics.core
AndroidX.input.motionPrediction
AndroidX.paging.testing
AndroidX.test.espresso.device
AndroidX.tv.foundation
AndroidX.tv.material
Firebase.dynamicModuleSupport
Google.firebase.dynamicModuleSupport
0.50.2
Version 0.50.2 (2022-09-24)
Minor change
Disable the old refreshVersionsDependenciesMapping
and migrateToRefreshVersionsDependenciesConstants
Gradle tasks.
Fixes
versionFor
could not work as it should have if it was used in multiple modules with different values: therefreshVersions
task would only display the updates of some of them, and mark the other ones as unused. This has been fixed.- Running the
refreshVersionsCleanup
task would log that thegradle/libs.versions.toml
file was modified even if it wasn't, and didn't exist in the first place. This is now fixed. - Version ordering now recognizes random qualifiers instead of marking with an unknown stability level.
New dependency notations:
Click to expand (15)
AndroidX.media3.dataSource
ApolloGraphQL.adapters
ApolloGraphQL.api
ApolloGraphQL.ast
ApolloGraphQL.httpCache
ApolloGraphQL.idlingResource
ApolloGraphQL.mockserver
ApolloGraphQL.normalizedCacheSqlite
ApolloGraphQL.normalizedCache
ApolloGraphQL.runtime
ApolloGraphQL.testingSupport
Google.horologist.dataLayer
KotlinX.serialization.bom
KotlinX.serialization.json.okio
Spring.boot.web
Credits
Thanks to all the folks that contributed in this release!
- Jacob Kwitkoski (@thederputy)
- Florian Levis (@Gounlaf)
- Seokjae Lee (@doljae)
- solonovamax (@solonovamax)
- Louis CAD (@LouisCAD)
- Jean-Michel Fayard (@jmfayard)
0.50.1
0.50.0
Version 0.50.0 (2022-09-09)
Support for Versions Catalogs! 🎉
Versions Catalogs are Gradle 7.4+ solution for storing dependencies and versions in a centralized file.
Gradle will automatically recognize the gradle/libs.versions.toml
file… and so will refreshVersions!
It is similar in spirit to the versions.properties
file, and we are happy to add support for it:
./gradlew refreshVersions
will now add available updates as comments inside thegradle/libs.versions.toml
file../gradlew refreshVersionsMigrate --mode=VersionCatalogAndVersionProperties
will generate a versions catalog and migrate your build to use it if you don't have one already.
Currently, we only support the default versions catalog. If you need support for multiple versions catalogs, add your 👍 on this issue.
This is a big and new feature, so feel free to provide feedback in this thread, and report issues with the right info if there's no existing one here.
Better support for versionFor
, and Jetpack Compose!
Before
versionFor
was helpful when you need to access a version located in the versions.properties
file, but if there was no dependency using it, you'd never see any updates.
For projects/modules using Jetpack Compose from Google, that meant you'd never see any updates for the compiler, and you'd need to look it up yourself.
Also, the version entry would be marked as unused, or would be the wrong one if you shared it with other Compose artifacts since the compiler now has its own versioning track.
Now
Now, passing a dependency notation such as AndroidX.compose.compiler
to versionFor
is exactly the same as if you used the dependency somewhere in the project:
You'll get all the updates, and if the version is not yet specified in the versions.properties
file, as usual, refreshVersions will try to find the latest most stable version available, plus it will also add the available comments for any newer, less stable version.
That makes it even easier to start a project with Jetpack Compose!
With this in a build.gradle.kts
file:
android {
composeOptions {
kotlinCompilerExtensionVersion = versionFor(AndroidX.compose.compiler) // Kotlin DSL
kotlinCompilerExtensionVersion = versionFor(project, AndroidX.compose.compiler) // Groovy DSL
}
}
AndroidX.compose.compiler
is equivalent to "androidx.compose.compiler:compiler:_"
.
You'll get that in the versions.properties
file if you were on version 1.3.0-rc01
:
version.androidx.compose.compiler=1.3.0-rc01
## # available=1.3.0-rc02
## # available=1.3.0
New page for all the built-in dependency notations 📕
To make it easy to start new projects, new modules, or using a common library, we spent a lot of time adding built-in dependency notations for Kotlin, kotlinx, AndroidX, and more.
However, it wasn't so easy to know that they exist.
That's why we made a dedicated page where you can find them all! Let us know how helpful it is to you!
Fixes
rejectVersionIf { … }
had an issue: its removal would not be taken into account until the Gradle daemon would be killed. This now behaves correctly.- We were ignoring repositories defined in
pluginManagement { … }
, which might have led to Gradle plugin updates being missed by refreshVersions. Now, we look up these repositories as well.
New dependency notations:
Click to expand (145)
AndroidX.appSearch.builtInTypes
AndroidX.compose.runtime.tracing
AndroidX.core.uwb
AndroidX.core.uwb.rxJava3
AndroidX.health.connect.client
AndroidX.javascriptEngine
AndroidX.lifecycle.runtime.compose
AndroidX.room.paging.guava
AndroidX.room.paging.rxJava2
AndroidX.room.paging.rxJava3
AndroidX.tracing.perfetto
CashApp.molecule.gradlePlugin
CashApp.molecule.runtime
CashApp.molecule.test
Google.accompanist.drawablePainter
Google.accompanist.flowLayout
Google.accompanist.navigationAnimation
Google.accompanist.navigationMaterial
Google.accompanist.permissions
Google.accompanist.placeholder
Google.accompanist.placeholder.material
Google.accompanist.webView
Google.ambient.crossDevice
Google.horologist.audio
Google.horologist.audio.ui
Google.horologist.composables
Google.horologist.compose.layout
Google.horologist.compose.tools
Google.horologist.media
Google.horologist.media.data
Google.horologist.media.ui
Google.horologist.media3.backend
Google.horologist.networkAwareness
Google.horologist.tiles
Square.okHttp3.mockWebServer3
Square.okHttp3.mockWebServer3.junit4
Square.okHttp3.mockWebServer3.junit5
Square.okHttp3.android
Square.okHttp3.brotli
Square.okHttp3.coroutines
Square.okHttp3.dnsOverHttps
Square.okHttp3.sse
Square.okHttp3.tls
Square.okHttp3.urlConnection
Arrow.core
Arrow.fx.coroutines
Arrow.fx.stm
Arrow.optics
Arrow.optics.kspPlugin
Arrow.optics.reflect
Arrow.stack
Arrow.analysis.gradlePlugin
Koin.navigation
Testing.kotest.extensions.property.arbs
Testing.kotest.extensions.property.datetime
Ktor.client.contentNegotiation
Ktor.client.contentNegotiationTests
Ktor.client.gson
Ktor.client.jackson
Ktor.client.java
Ktor.client.okHttp
Ktor.client.resources
Ktor.plugins.events
Ktor.plugins.http
Ktor.plugins.http.cio
Ktor.plugins.io
Ktor.plugins.network
Ktor.plugins.networkTls
Ktor.plugins.networkTlsCertificates
Ktor.plugins.resources
Ktor.plugins.serialization
Ktor.plugins.serialization.gson
Ktor.plugins.serialization.jackson
Ktor.plugins.serialization.kotlinx
Ktor.plugins.serialization.kotlinx.cbor
Ktor.plugins.serialization.kotlinx.json
Ktor.plugins.serialization.kotlinx.tests
Ktor.plugins.serialization.kotlinx.xml
Ktor.server.auth
Ktor.server.auth.jwt
Ktor.server.auth.ldap
Ktor.server.autoHeadResponse
Ktor.server.cachingHeaders
Ktor.server.callId
Ktor.server.callLogging
Ktor.server.cio
Ktor.server.compression
Ktor.server.conditionalHeaders
Ktor.server.contentNegotiation
Ktor.server.cors
Ktor.server.dataConversion
Ktor.server.defaultHeaders
Ktor.server.doubleReceive
Ktor.server.forwardedHeader
Ktor.server.freeMarker
Ktor.server.hostCommon
Ktor.server.hsts
Ktor.server.htmlBuilder
Ktor.server.httpRedirect
Ktor.server.httpRedirect
Ktor.server.jte
Ktor.server.locations
Ktor.server.methodOverride
Ktor.server.metrics
Ktor.server.metricsMicrometer
Ktor.server.mustache
Ktor.server.partialContent
Ktor.server.pebble
Ktor.server.resources
Ktor.server.sessions
Ktor.server.statusPages
Ktor.server.testSuites
Ktor.server.thymeleaf
Ktor.server.velocity
Ktor.server.webjars
Ktor.server.websockets
Ktor.server
Ktor.plugins.websocketSerialization
Ktor.plugins.websockets
Testing.assertj.core
Testing.assertj.db
Testing.assertj.guava
Testing.assertj.jodaTime
Testing.assertj.swing
Testing.hamcrest
Testing.hamcrest.core
Testing.hamcrest.library
JetBrains.exposed.core
JetBrains.exposed.dao
JetBrains.exposed.jdbc
KotlinX.dataframe
KotlinX.dataframe.arrow
KotlinX.dataframe.core
KotlinX.dataframe.excel
KotlinX.dataframe.dataframe
KotlinX.deeplearning.api
KotlinX.deeplearning.onnx
KotlinX.deeplearning.visualization
KotlinX.lincheck
KotlinX.lincheck.jvm
KotlinX.multik.api
KotlinX.multik.default
KotlinX.multik.jvm
KotlinX.multik.native
Spring.boms.springCloud
Credits
Thanks to all the folks that contributed in updating the built-in dependency notations!
- Jacob Kwitkoski (@thederputy) for
CashApp.molecule
- Rémi Latapy (@rlatapy-luna) for
Google.accompanist
- Yuri Schimke (@rlatapy-luna) for
Google.horologist
andSquare.okHttp3
- Brady Aiello (@brady-aiello) for
Ktor
- Kamalesh (@imashnake0) for
JetBrains.exposed
,Testing.assertj
,Testing.hamcrest
- @doljae for
Spring.boms.springCloud
- Johan Reitan (@joharei) for
KotlinX.multik
,KotlinX.lincheck
,KotlinX.deeplearning
- Ryan Fonzi (@RFonzi) for
Arrow
And thanks to the GitHub sponsors of the maintainers @LouisCAD and @jmfayard who didn't count the hours spent on this project since 2018-2019!
We hope you save a lot of time thanks to this project and can therefore leave work early, or pursue more valuable tasks and projects. 😉
If you're not a sponsor yet, please consider becoming one, as a company, as an individual, or even both, it means a lot to us!
Just click the heart button at the top of the GitHub repo webpage, follow the steps, and your heart. Thank you!