BOM Migration — Gradle TOML Version Catalog (libs.versions.toml)
OpenRewrite does not yet support TOML version catalogs (openrewrite/rewrite#4400). Handle manually.
Check for gradle/libs.versions.toml. If it exists and contains Azure entries, apply these steps. Always update build.gradle / build.gradle.kts references in tandem.
💡 Tip: TOML alias
azure-sdk-bombecomes accessorlibs.azure.sdk.bom(hyphens→dots). CamelCaseazureSdkBombecomeslibs.azureSdkBom. Match the project's existing convention.
Step 1 — Add or upgrade the BOM
In gradle/libs.versions.toml:
[versions]
azureSdkBom = "{bom_version}"
[libraries]
azure-sdk-bom = { group = "com.azure", name = "azure-sdk-bom", version.ref = "azureSdkBom" }In build.gradle (Groovy DSL):
implementation enforcedPlatform(libs.azure.sdk.bom)In build.gradle.kts (Kotlin DSL):
implementation(enforcedPlatform(libs.azure.sdk.bom))Step 2 — Remove explicit versions from BOM-managed libraries
For each com.azure.* library in [libraries] that the BOM manages, drop version.ref / version and remove orphaned [versions] entries.
# Before
[versions]
azureIdentity = "1.15.0"
[libraries]
azureIdentity = { group = "com.azure", name = "azure-identity", version.ref = "azureIdentity" }
# After
[libraries]
azureIdentity = { group = "com.azure", name = "azure-identity" }Step 3 — Replace legacy entries with modern equivalents
For each com.microsoft.azure.* library: replace group/name with the modern com.azure.* equivalent, drop version.ref/version if BOM-managed, remove orphaned [versions] entries, and update alias references in build.gradle and [bundles].
# Before
[versions]
azureSdk = "1.41.4"
azureStorage = "8.6.6"
[libraries]
azure = { group = "com.microsoft.azure", name = "azure", version.ref = "azureSdk" }
azureStorage = { group = "com.microsoft.azure", name = "azure-storage", version.ref = "azureStorage" }
# After (BOM-managed)
[libraries]
azureResourcemanager = { group = "com.azure.resourcemanager", name = "azure-resourcemanager" }
azureStorageBlob = { group = "com.azure", name = "azure-storage-blob" }Update build.gradle and [bundles] to use the new aliases.
TOML patterns to recognise
Libraries may use any of these forms — handle all of them:
lib = { group = "g", name = "a", version.ref = "v" }
lib = { module = "g:a", version.ref = "v" }
lib = { module = "g:a", version = "1.0" }
lib = { group = "g", name = "a", version = { strictly = "1.0" } }