diff --git a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
index 4082b17..763d853 100644
--- a/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/dependencies/Dependencies.kt
@@ -43,15 +43,9 @@
 const val AUTO_SERVICE_PROCESSOR = "com.google.auto.service:auto-service:1.0-rc6"
 const val AUTO_VALUE = "com.google.auto.value:auto-value:1.6.3"
 const val AUTO_VALUE_ANNOTATIONS = "com.google.auto.value:auto-value-annotations:1.6.3"
-const val AUTO_VALUE_PARCEL = "com.ryanharter.auto.value:auto-value-parcel:0.2.6"
-const val ANTLR = "org.antlr:antlr4:4.7.1"
-const val APACHE_COMMONS_CODEC = "commons-codec:commons-codec:1.10"
-const val ASSERTJ = "org.assertj:assertj-core:3.11.1"
-const val CHECKER_FRAMEWORK = "org.checkerframework:checker-qual:2.5.3"
 const val CONSTRAINT_LAYOUT = "androidx.constraintlayout:constraintlayout:2.0.1@aar"
 const val CONSTRAINT_LAYOUT_CORE = "androidx.constraintlayout:constraintlayout-core:1.0.0-alpha1"
 const val DAGGER = "com.google.dagger:dagger:2.35"
-const val DAGGER_COMPILER = "com.google.dagger:dagger-compiler:2.35"
 const val DEXMAKER_MOCKITO = "com.linkedin.dexmaker:dexmaker-mockito:2.25.0"
 const val DEXMAKER_MOCKITO_INLINE = "com.linkedin.dexmaker:dexmaker-mockito-inline:2.25.0"
 const val ESPRESSO_CONTRIB = "androidx.test.espresso:espresso-contrib:3.3.0"
@@ -60,11 +54,7 @@
 const val ESPRESSO_IDLING_NET = "androidx.test.espresso.idling:idling-net:3.3.0"
 const val ESPRESSO_IDLING_RESOURCE = "androidx.test.espresso:espresso-idling-resource:3.3.0"
 const val ESPRESSO_WEB = "androidx.test.espresso:espresso-web:3.3.0"
-const val FINDBUGS = "com.google.code.findbugs:jsr305:3.0.2"
-const val FIREBASE_APPINDEXING = "com.google.firebase:firebase-appindexing:19.2.0"
-const val GCM_NETWORK_MANAGER = "com.google.android.gms:play-services-gcm:17.0.0"
 const val GOOGLE_COMPILE_TESTING = "com.google.testing.compile:compile-testing:0.18"
-const val GSON = "com.google.code.gson:gson:2.8.0"
 const val GUAVA_VERSION = "29.0-jre"
 const val GUAVA = "com.google.guava:guava:$GUAVA_VERSION"
 const val GUAVA_ANDROID_VERSION = "29.0-android"
@@ -74,12 +64,10 @@
 const val GRADLE_INCAP_HELPER_PROCESSOR = "net.ltgt.gradle.incap:incap-processor:0.2"
 const val INTELLIJ_ANNOTATIONS = "com.intellij:annotations:12.0"
 const val JAVAPOET = "com.squareup:javapoet:1.13.0"
-const val JSQLPARSER = "com.github.jsqlparser:jsqlparser:3.1"
 const val JSR250 = "javax.annotation:javax.annotation-api:1.2"
 const val JUNIT = "junit:junit:4.12"
 const val KOTLINPOET = "com.squareup:kotlinpoet:1.8.0"
 const val KOTLIN_COMPILE_TESTING = "com.github.tschuchortdev:kotlin-compile-testing:1.4.1"
-const val KOTLIN_COMPILE_TESTING_KSP = "com.github.tschuchortdev:kotlin-compile-testing-ksp:1.4.1"
 
 /**
  * KSP is used both as a plugin and runtime dependency, hence its version is declared in the
@@ -100,9 +88,6 @@
 const val MOCKITO_KOTLIN = "com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0"
 const val MULTIDEX = "androidx.multidex:multidex:2.0.1"
 const val NULLAWAY = "com.uber.nullaway:nullaway:0.3.7"
-const val PLAY_CORE = "com.google.android.play:core:1.9.1"
-const val PLAY_SERVICES_BASEMENT = "com.google.android.gms:play-services-basement:17.0.0"
-const val REACTIVE_STREAMS = "org.reactivestreams:reactive-streams:1.0.0"
 const val RX_JAVA = "io.reactivex.rxjava2:rxjava:2.2.9"
 const val RX_JAVA3 = "io.reactivex.rxjava3:rxjava:3.0.0"
 val SKIKO_VERSION = System.getenv("SKIKO_VERSION") ?: "0.3.1"
@@ -125,12 +110,9 @@
 }
 const val TRUTH = "com.google.truth:truth:1.0.1"
 const val VIEW_BINDING = "androidx.databinding:viewbinding:4.1.2"
-const val XERIAL = "org.xerial:sqlite-jdbc:3.25.2"
 const val XPP3 = "xpp3:xpp3:1.1.4c"
 const val XMLPULL = "xmlpull:xmlpull:1.1.3.1"
 
-const val RETROFIT = "com.squareup.retrofit2:retrofit:2.7.2"
-const val OKHTTP_MOCKWEBSERVER = "com.squareup.okhttp3:mockwebserver:3.14.7"
 const val SQLDELIGHT_ANDROID = "com.squareup.sqldelight:android-driver:1.3.0"
 const val SQLDELIGHT_COROUTINES_EXT = "com.squareup.sqldelight:coroutines-extensions:1.3.0"
 
@@ -140,8 +122,6 @@
 const val PROTOBUF_COMPILER = "com.google.protobuf:protoc:3.10.0"
 const val PROTOBUF_LITE = "com.google.protobuf:protobuf-javalite:3.10.0"
 
-const val WIRE_RUNTIME = "com.squareup.wire:wire-runtime:3.6.0"
-
 // The following versions change depending on whether we are in the main or ui project - the
 // specific versions are configured in build_dependencies.gradle as they are needed during
 // buildSrc configuration. They are then set here in AndroidXPlugin when configuring the root
@@ -160,12 +140,6 @@
 val KOTLIN_TEST_JUNIT get() = "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion"
 val KOTLIN_TEST_JS get() = "org.jetbrains.kotlin:kotlin-test-js:$kotlinVersion"
 val KOTLIN_REFLECT get() = "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
-val KOTLIN_COMPILER_EMBEDDABLE
-    get() = "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlinVersion"
-val KOTLIN_COMPILER_DAEMON_EMBEDDABLE
-    get() = "org.jetbrains.kotlin:kotlin-daemon-embeddable:$kotlinVersion"
-val KOTLIN_ANNOTATION_PROCESSING_EMBEDDABLE
-    get() = "org.jetbrains.kotlin:kotlin-annotation-processing-embeddable:$kotlinVersion"
 
 internal lateinit var kotlinCoroutinesVersion: String
 
@@ -186,7 +160,6 @@
 
 internal lateinit var agpVersion: String
 
-const val AGP_STABLE = "com.android.tools.build:gradle:3.5.2"
 val AGP_LATEST get() = "com.android.tools.build:gradle:$agpVersion"
 
 internal lateinit var lintVersion: String
diff --git a/development/versionCatalogMigrate.sh b/development/versionCatalogMigrate.sh
index da5fa97..0e36b76 100755
--- a/development/versionCatalogMigrate.sh
+++ b/development/versionCatalogMigrate.sh
@@ -99,7 +99,7 @@
 find -iname build.gradle | xargs sed -i "s/TRUTH/libs.truth/"
 find -iname build.gradle | xargs sed -i "s/VIEW_BINDING/libs.viewBinding/"
 find -iname build.gradle | xargs sed -i "s/WIRE_RUNTIME/libs.wireRuntime/"
-find -iname build.gradle | xargs sed -i "s/XERIAL/libs.xerial/"
+find -iname build.gradle | xargs sed -i "s/XERIAL/libs.sqliteJdbc/"
 find -iname build.gradle | xargs sed -i "s/XPP3/libs.xpp3/"
 find -iname build.gradle | xargs sed -i "s/XMLPULL/libs.xmlpull/"
 find -iname build.gradle | xargs sed -i "s/JUNIT/libs.junit/"
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c1eaf7b..893a5df 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -89,7 +89,7 @@
 kotlinCoroutinesRx2 = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-rx2", version.ref = "kotlinCoroutines" }
 kotlinCoroutinesRx3 = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-rx3", version.ref = "kotlinCoroutines" }
 kotlinDaemonEmbeddable = { module = "org.jetbrains.kotlin:kotlin-daemon-embeddable", version.ref = "kotlin" }
-kotlinMetadataJvm = { module = "org.jetbrains.kotlinx:kotlinx-metadata-jvm", version = "0.2.0" }
+kotlinMetadataJvm = { module = "org.jetbrains.kotlinx:kotlinx-metadata-jvm", version = "0.3.0" }
 kotlinStdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }
 kotlinStdlibCommon = { module = "org.jetbrains.kotlin:kotlin-stdlib-common", version.ref = "kotlin" }
 kotlinStdlibJdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" }
@@ -130,6 +130,7 @@
 shadow = { module = "com.github.jengelman.gradle.plugins:shadow", version = "6.1.0" }
 sqldelightAndroid = { module = "com.squareup.sqldelight:android-driver", version.ref = "sqldelight" }
 sqldelightCoroutinesExt = { module = "com.squareup.sqldelight:coroutines-extensions", version.ref = "sqldelight" }
+sqliteJdbc = { module = "org.xerial:sqlite-jdbc", version = "3.25.2" }
 testCore = { module = "androidx.test:core", version.ref = "androidxTest" }
 testExtJunit = { module = "androidx.test.ext:junit", version.ref = "androidxTestExt" }
 testExtJunitKtx = { module = "androidx.test.ext:junit-ktx", version.ref = "androidxTestExt" }
@@ -142,6 +143,5 @@
 viewBinding = { module = "androidx.databinding:viewbinding", version = "4.1.2" }
 wireGradlePlugin = { module = "com.squareup.wire:wire-gradle-plugin", version.ref = "wire" }
 wireRuntime = { module = "com.squareup.wire:wire-runtime", version.ref = "wire" }
-xerial = { module = "org.xerial:sqlite-jdbc", version = "3.25.2" }
 xpp3 = { module = "xpp3:xpp3", version = "1.1.4c" }
 xmlpull = { module = "xmlpull:xmlpull", version = "1.1.3.1" }
diff --git a/room/benchmark/build.gradle b/room/benchmark/build.gradle
index 2aa19d3..b985390 100644
--- a/room/benchmark/build.gradle
+++ b/room/benchmark/build.gradle
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import static androidx.build.dependencies.DependenciesKt.*
 
 plugins {
     id("AndroidXPlugin")
@@ -31,11 +30,11 @@
     androidTestImplementation(project(":room:room-rxjava2"))
     androidTestImplementation("androidx.arch.core:core-runtime:2.0.1")
     androidTestImplementation(projectOrArtifact(":benchmark:benchmark-junit4"))
-    androidTestImplementation(RX_JAVA)
-    androidTestImplementation(JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_CORE)
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(ANDROIDX_TEST_RULES)
-    androidTestImplementation(KOTLIN_STDLIB)
+    androidTestImplementation(libs.rxjava2)
+    androidTestImplementation(libs.junit)
+    androidTestImplementation(libs.testExtJunit)
+    androidTestImplementation(libs.testCore)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.testRules)
+    androidTestImplementation(libs.kotlinStdlib)
 }
diff --git a/room/common/build.gradle b/room/common/build.gradle
index 0be0326..dee88d6 100644
--- a/room/common/build.gradle
+++ b/room/common/build.gradle
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
-import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension;
 import androidx.build.Publish
 
 plugins {
@@ -27,10 +24,10 @@
 
 dependencies {
     api("androidx.annotation:annotation:1.1.0")
-    testImplementation(KOTLIN_STDLIB)
-    testImplementation(JUNIT)
-    testImplementation(MOCKITO_CORE)
-    testImplementation(GUAVA)
+    testImplementation(libs.kotlinStdlib)
+    testImplementation(libs.junit)
+    testImplementation(libs.mockitoCore)
+    testImplementation(libs.guava)
 }
 
 androidx {
diff --git a/room/compiler-processing-testing/build.gradle b/room/compiler-processing-testing/build.gradle
index f36bac4..a82aae8 100644
--- a/room/compiler-processing-testing/build.gradle
+++ b/room/compiler-processing-testing/build.gradle
@@ -16,7 +16,6 @@
 
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
-import androidx.build.Publish
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
 import static androidx.build.dependencies.DependenciesKt.*
@@ -29,17 +28,17 @@
 dependencies {
     implementation("androidx.annotation:annotation:1.1.0")
     api(project(":room:room-compiler-processing"))
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
     implementation(libs.kspApi)
-    implementation(KOTLIN_STDLIB_JDK8) // KSP defines older version as dependency, force update.
+    implementation(libs.kotlinStdlibJdk8) // KSP defines older version as dependency, force update.
     implementation(libs.ksp)
-    implementation(GOOGLE_COMPILE_TESTING)
-    implementation(KOTLIN_COMPILE_TESTING_KSP)
+    implementation(libs.googleCompileTesting)
+    implementation(libs.kotlinCompileTestingKsp)
     // specify these to match the kotlin compiler version in AndroidX rather than what KSP or KCT
     // uses
-    implementation(KOTLIN_COMPILER_EMBEDDABLE)
-    implementation(KOTLIN_COMPILER_DAEMON_EMBEDDABLE)
-    implementation(KOTLIN_ANNOTATION_PROCESSING_EMBEDDABLE)
+    implementation(libs.kotlinCompilerEmbeddable)
+    implementation(libs.kotlinDaemonEmbeddable)
+    implementation(libs.kotlinAnnotationProcessingEmbeddable)
 }
 
 /**
diff --git a/room/compiler-processing/build.gradle b/room/compiler-processing/build.gradle
index 6d02085..97868a4 100644
--- a/room/compiler-processing/build.gradle
+++ b/room/compiler-processing/build.gradle
@@ -18,31 +18,29 @@
 import androidx.build.LibraryType
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("kotlin")
 }
 
 dependencies {
-    api(KOTLIN_STDLIB)
-    api(JAVAPOET)
-    api(KOTLINPOET)
+    api(libs.kotlinStdlib)
+    api(libs.javapoet)
+    api(libs.kotlinPoet)
     implementation("androidx.annotation:annotation:1.1.0")
-    implementation(GUAVA)
-    implementation(AUTO_COMMON)
-    implementation(AUTO_VALUE_ANNOTATIONS)
+    implementation(libs.guava)
+    implementation(libs.autoCommon)
+    implementation(libs.autoValueAnnotations)
 
-    implementation(KOTLIN_METADATA_JVM)
-    implementation(INTELLIJ_ANNOTATIONS)
+    implementation(libs.kotlinMetadataJvm)
+    implementation(libs.intellijAnnotations)
     implementation(libs.kspApi)
-    implementation(KOTLIN_STDLIB_JDK8) // KSP defines older version as dependency, force update.
+    implementation(libs.kotlinStdlibJdk8) // KSP defines older version as dependency, force update.
 
-    testImplementation(GOOGLE_COMPILE_TESTING)
-    testImplementation(JUNIT)
-    testImplementation(JSR250)
-    testImplementation(KOTLIN_COMPILE_TESTING_KSP)
+    testImplementation(libs.googleCompileTesting)
+    testImplementation(libs.junit)
+    testImplementation(libs.jsr250)
+    testImplementation(libs.kotlinCompileTestingKsp)
     testImplementation(libs.ksp)
     testImplementation(project(":room:room-compiler-processing-testing"))
 }
diff --git a/room/compiler/build.gradle b/room/compiler/build.gradle
index 84fc56d..364f385 100644
--- a/room/compiler/build.gradle
+++ b/room/compiler/build.gradle
@@ -96,24 +96,24 @@
     implementation(project(":room:room-common"))
     implementation(project(":room:room-migration"))
     implementation(project(":room:room-compiler-processing"))
-    implementation(KOTLIN_STDLIB)
-    implementation(AUTO_COMMON)
-    implementation(AUTO_VALUE_ANNOTATIONS)
-    implementation(JAVAPOET)
+    implementation(libs.kotlinStdlib)
+    implementation(libs.autoCommon)
+    implementation(libs.autoValueAnnotations)
+    implementation(libs.javapoet)
     implementation(libs.kspApi)
-    shadowed(ANTLR)
-    implementation(XERIAL)
-    implementation(KOTLIN_METADATA_JVM)
-    implementation(APACHE_COMMONS_CODEC)
-    implementation(INTELLIJ_ANNOTATIONS)
-    testImplementation(TRUTH)
-    testImplementation(AUTO_VALUE) // to access the processor in tests
+    shadowed(libs.antlr4)
+    implementation(libs.sqliteJdbc)
+    implementation(libs.kotlinMetadataJvm)
+    implementation(libs.apacheCommonsCodec)
+    implementation(libs.intellijAnnotations)
+    testImplementation(libs.truth)
+    testImplementation(libs.autoValue) // to access the processor in tests
     testImplementation(projectOrArtifact(":paging:paging-common"))
     testImplementation(project(":room:room-compiler-processing-testing"))
-    testImplementation(JUNIT)
-    testImplementation(JSR250)
-    testImplementation(MOCKITO_CORE)
-    testImplementation(ANTLR)
+    testImplementation(libs.junit)
+    testImplementation(libs.jsr250)
+    testImplementation(libs.mockitoCore)
+    testImplementation(libs.antlr4)
     testImplementation(fileTree(
             dir: "${SdkHelperKt.getSdkPath(project)}/platforms/$SupportConfig.COMPILE_SDK_VERSION/",
             include : "android.jar"
diff --git a/room/guava/build.gradle b/room/guava/build.gradle
index d34babf..3309a44 100644
--- a/room/guava/build.gradle
+++ b/room/guava/build.gradle
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
-import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension
 import androidx.build.Publish
 
 plugins {
@@ -33,8 +30,8 @@
     implementation("androidx.arch.core:core-runtime:2.0.1")
     api("androidx.annotation:annotation:1.0.0")
     implementation("androidx.concurrent:concurrent-futures:1.0.0")
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(TRUTH)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.truth)
 }
 
 androidx {
diff --git a/room/integration-tests/autovaluetestapp/build.gradle b/room/integration-tests/autovaluetestapp/build.gradle
index 01ee90f..252ca03 100644
--- a/room/integration-tests/autovaluetestapp/build.gradle
+++ b/room/integration-tests/autovaluetestapp/build.gradle
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 buildscript {
     // TODO: Remove this when this test app no longer depends on 1.0.0 of vectordrawable-animated.
     // vectordrawable and vectordrawable-animated were accidentally using the same package name
@@ -36,19 +34,19 @@
     // depend on the shadowed version so that it tests with the shipped artifact
     androidTestAnnotationProcessor project(path: ":room:room-compiler",
             configuration: "shadowAndImplementation")
-    androidTestAnnotationProcessor(AUTO_VALUE)
-    androidTestAnnotationProcessor(AUTO_VALUE_PARCEL)
+    androidTestAnnotationProcessor(libs.autoValue)
+    androidTestAnnotationProcessor(libs.autoValueParcel)
 
     androidTestImplementation(projectOrArtifact(":arch:core:core-runtime")) // Added for b/155802460
     androidTestImplementation(project(":room:room-testing"))
     androidTestImplementation("androidx.arch.core:core-testing:2.0.1")
-    androidTestImplementation(AUTO_VALUE_ANNOTATIONS)
-    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_CORE)
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(ESPRESSO_CORE)
-    androidTestImplementation(MOCKITO_CORE, excludes.bytebuddy) // DexMaker has it's own MockMaker
-    androidTestImplementation(DEXMAKER_MOCKITO, excludes.bytebuddy) // DexMaker has it's own MockMaker
+    androidTestImplementation(libs.autoValueAnnotations)
+    androidTestImplementation(libs.testExtJunit)
+    androidTestImplementation(libs.testCore)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.espressoCore)
+    androidTestImplementation(libs.mockitoCore, excludes.bytebuddy) // DexMaker has it's own MockMaker
+    androidTestImplementation(libs.dexmakerMockito, excludes.bytebuddy) // DexMaker has it's own MockMaker
 
-    testImplementation(JUNIT)
+    testImplementation(libs.junit)
 }
diff --git a/room/integration-tests/incremental-annotation-processing/build.gradle b/room/integration-tests/incremental-annotation-processing/build.gradle
index 8aeae46..5a725b5 100644
--- a/room/integration-tests/incremental-annotation-processing/build.gradle
+++ b/room/integration-tests/incremental-annotation-processing/build.gradle
@@ -16,19 +16,17 @@
 
 import androidx.build.SdkResourceGenerator
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("kotlin")
 }
 
 dependencies {
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
 
     testImplementation(project(":internal-testutils-gradle-plugin"))
-    testImplementation(JUNIT)
-    testImplementation(TRUTH)
+    testImplementation(libs.junit)
+    testImplementation(libs.truth)
     testImplementation(gradleTestKit())
 }
 
diff --git a/room/integration-tests/kotlintestapp/build.gradle b/room/integration-tests/kotlintestapp/build.gradle
index ecaa20a..462ad43 100644
--- a/room/integration-tests/kotlintestapp/build.gradle
+++ b/room/integration-tests/kotlintestapp/build.gradle
@@ -20,8 +20,6 @@
 
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.application")
@@ -93,9 +91,9 @@
     implementation(projectOrArtifact(":arch:core:core-runtime"))
     implementation(projectOrArtifact(":lifecycle:lifecycle-livedata"))
     implementation(projectOrArtifact(":lifecycle:lifecycle-livedata-ktx"))
-    implementation(KOTLIN_STDLIB)
-    implementation(KOTLIN_COROUTINES_ANDROID)
-    implementation(MULTIDEX)
+    implementation(libs.kotlinStdlib)
+    implementation(libs.kotlinCoroutinesAndroid)
+    implementation(libs.multidex)
     // depend on the shadowed version so that it tests with the shipped artifact
     // this is a temporary attribute until KSP and AndroidX plugin supports variants.
     if (useKsp) {
@@ -109,17 +107,17 @@
     }
     androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-livedata-ktx"))
     androidTestImplementation(projectOrArtifact(":arch:core:core-runtime")) // Added for b/155802460
-    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_CORE)
-    androidTestImplementation(ANDROIDX_TEST_RUNNER) {
+    androidTestImplementation(libs.testExtJunit)
+    androidTestImplementation(libs.testCore)
+    androidTestImplementation(libs.testRunner) {
         exclude module: "support-annotations"
         exclude module: "hamcrest-core"
     }
-    androidTestImplementation(ESPRESSO_CORE, {
+    androidTestImplementation(libs.espressoCore, {
         exclude group: "com.android.support", module: "support-annotations"
         exclude module: "hamcrest-core"
     })
-    androidTestImplementation(TRUTH)
+    androidTestImplementation(libs.truth)
     androidTestImplementation(project(":room:room-guava"))
     androidTestImplementation(project(":room:room-testing"))
     androidTestImplementation(project(":room:room-rxjava2"))
@@ -127,9 +125,9 @@
     androidTestImplementation(project(":room:room-ktx"))
     androidTestImplementation("androidx.arch.core:core-testing:2.0.1")
     androidTestImplementation(projectOrArtifact(":paging:paging-runtime"))
-    androidTestImplementation(GUAVA_ANDROID)
-    androidTestImplementation(RX_JAVA)
-    testImplementation(MOCKITO_CORE)
+    androidTestImplementation(libs.guavaAndroid)
+    androidTestImplementation(libs.rxjava2)
+    testImplementation(libs.mockitoCore)
 }
 
 if (useKsp) {
diff --git a/room/integration-tests/noappcompattestapp/build.gradle b/room/integration-tests/noappcompattestapp/build.gradle
index a594cb2..80b7a1e 100644
--- a/room/integration-tests/noappcompattestapp/build.gradle
+++ b/room/integration-tests/noappcompattestapp/build.gradle
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.application")
@@ -28,9 +26,9 @@
             configuration: "shadowAndImplementation")
     androidTestAnnotationProcessor project(path: ":room:room-compiler",
             configuration: "shadowAndImplementation")
-    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_CORE)
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(ESPRESSO_CORE)
-    testImplementation(JUNIT)
+    androidTestImplementation(libs.testExtJunit)
+    androidTestImplementation(libs.testCore)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.espressoCore)
+    testImplementation(libs.junit)
 }
diff --git a/room/integration-tests/testapp/build.gradle b/room/integration-tests/testapp/build.gradle
index f89faf2..34e790d 100644
--- a/room/integration-tests/testapp/build.gradle
+++ b/room/integration-tests/testapp/build.gradle
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 buildscript {
     // TODO: Remove this when this test app no longer depends on 1.0.0 of vectordrawable-animated.
     // vectordrawable and vectordrawable-animated were accidentally using the same package name
@@ -80,10 +78,10 @@
     implementation(projectOrArtifact(":arch:core:core-runtime"))
     implementation(projectOrArtifact(":lifecycle:lifecycle-livedata"))
     implementation(projectOrArtifact(":lifecycle:lifecycle-runtime"))
-    implementation(MULTIDEX)
+    implementation(libs.multidex)
 
-    // FINDBUGS dependency resolves an app/testapp version conflict.
-    implementation(FINDBUGS)
+    // libs.findbugs dependency resolves an app/testapp version conflict.
+    implementation(libs.findbugs)
     implementation("androidx.recyclerview:recyclerview:1.0.0")
     implementation("androidx.appcompat:appcompat:1.0.0")
     // use the shadowed dependency in tests so that if the shadowing does not work properly,
@@ -103,21 +101,21 @@
     androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-runtime-testing"))
     androidTestImplementation(projectOrArtifact(":lifecycle:lifecycle-livedata"))
 
-    // FINDBUGS dependency resolves an app/testapp version conflict.
-    androidTestImplementation(FINDBUGS)
-    androidTestImplementation(GUAVA_ANDROID)
-    androidTestImplementation(RX_JAVA)
-    androidTestImplementation(RX_JAVA3)
-    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_CORE)
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(ANDROIDX_TEST_RULES)
-    androidTestImplementation(ESPRESSO_CORE)
-    androidTestImplementation(TRUTH)
-    androidTestImplementation(MOCKITO_CORE, excludes.bytebuddy) // DexMaker has it's own MockMaker
-    androidTestImplementation(DEXMAKER_MOCKITO, excludes.bytebuddy) // DexMaker has it's own MockMaker
+    // libs.findbugs dependency resolves an app/testapp version conflict.
+    androidTestImplementation(libs.findbugs)
+    androidTestImplementation(libs.guavaAndroid)
+    androidTestImplementation(libs.rxjava2)
+    androidTestImplementation(libs.rxjava3)
+    androidTestImplementation(libs.testExtJunit)
+    androidTestImplementation(libs.testCore)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.testRules)
+    androidTestImplementation(libs.espressoCore)
+    androidTestImplementation(libs.truth)
+    androidTestImplementation(libs.mockitoCore, excludes.bytebuddy) // DexMaker has it's own MockMaker
+    androidTestImplementation(libs.dexmakerMockito, excludes.bytebuddy) // DexMaker has it's own MockMaker
     androidTestImplementation(project(":internal-testutils-truth"))
 
 
-    testImplementation(JUNIT)
+    testImplementation(libs.junit)
 }
diff --git a/room/ktx/build.gradle b/room/ktx/build.gradle
index 92e897e..36718fc 100644
--- a/room/ktx/build.gradle
+++ b/room/ktx/build.gradle
@@ -14,14 +14,9 @@
  * limitations under the License.
  */
 
-
-import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
-
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
-import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension
 import androidx.build.Publish
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
 plugins {
     id("AndroidXPlugin")
@@ -32,18 +27,18 @@
 dependencies {
     api(project(":room:room-common"))
     api(project(":room:room-runtime"))
-    api(KOTLIN_STDLIB)
-    api(KOTLIN_COROUTINES_ANDROID)
-    testImplementation(JUNIT)
-    testImplementation(MOCKITO_CORE)
-    testImplementation(TRUTH)
+    api(libs.kotlinStdlib)
+    api(libs.kotlinCoroutinesAndroid)
+    testImplementation(libs.junit)
+    testImplementation(libs.mockitoCore)
+    testImplementation(libs.truth)
     testImplementation("androidx.lifecycle:lifecycle-livedata-core:2.0.0")
-    testImplementation(ANDROIDX_TEST_RUNNER)
-    testImplementation(KOTLIN_COROUTINES_TEST)
+    testImplementation(libs.testRunner)
+    testImplementation(libs.kotlinCoroutinesTest)
 
-    androidTestImplementation(TRUTH)
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(KOTLIN_COROUTINES_TEST)
+    androidTestImplementation(libs.truth)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.kotlinCoroutinesTest)
 }
 
 androidx {
diff --git a/room/migration/build.gradle b/room/migration/build.gradle
index d3e717f..c19662e 100644
--- a/room/migration/build.gradle
+++ b/room/migration/build.gradle
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
-import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension;
 import androidx.build.Publish
 
 plugins {
@@ -27,11 +24,11 @@
 
 dependencies {
     implementation(project(":room:room-common"))
-    implementation(KOTLIN_STDLIB)
-    implementation(GSON)
-    testImplementation(JUNIT)
-    testImplementation(INTELLIJ_ANNOTATIONS)
-    testImplementation(MOCKITO_CORE)
+    implementation(libs.kotlinStdlib)
+    implementation(libs.gson)
+    testImplementation(libs.junit)
+    testImplementation(libs.intellijAnnotations)
+    testImplementation(libs.mockitoCore)
 }
 
 androidx {
diff --git a/room/runtime/build.gradle b/room/runtime/build.gradle
index 1740d3c..2b63351 100644
--- a/room/runtime/build.gradle
+++ b/room/runtime/build.gradle
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
-import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension
 import androidx.build.Publish
 
 plugins {
@@ -43,24 +40,24 @@
     compileOnly("androidx.paging:paging-common:2.0.0")
     compileOnly("androidx.lifecycle:lifecycle-livedata-core:2.0.0")
     implementation("androidx.annotation:annotation-experimental:1.1.0-rc01")
-    compileOnly KOTLIN_STDLIB // Due to :annotation-experimental
+    compileOnly libs.kotlinStdlib // Due to :annotation-experimental
 
     testImplementation("androidx.arch.core:core-testing:2.0.1")
-    testImplementation(JUNIT)
-    testImplementation(MOCKITO_CORE)
+    testImplementation(libs.junit)
+    testImplementation(libs.mockitoCore)
     testImplementation("androidx.lifecycle:lifecycle-livedata-core:2.0.0")
-    testImplementation(KOTLIN_STDLIB)
-    testImplementation(TRUTH)
-    testImplementation(ANDROIDX_TEST_RUNNER) // Needed for @FlakyTest and @Ignore
+    testImplementation(libs.kotlinStdlib)
+    testImplementation(libs.truth)
+    testImplementation(libs.testRunner) // Needed for @FlakyTest and @Ignore
 
-    androidTestImplementation(JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_CORE)
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(ESPRESSO_CORE)
-    androidTestImplementation(KOTLIN_STDLIB)
-    androidTestImplementation(MOCKITO_CORE, excludes.bytebuddy) // DexMaker has it"s own MockMaker
-    androidTestImplementation(DEXMAKER_MOCKITO, excludes.bytebuddy) // DexMaker has it"s own MockMaker
+    androidTestImplementation(libs.junit)
+    androidTestImplementation(libs.testExtJunit)
+    androidTestImplementation(libs.testCore)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.espressoCore)
+    androidTestImplementation(libs.kotlinStdlib)
+    androidTestImplementation(libs.mockitoCore, excludes.bytebuddy) // DexMaker has it"s own MockMaker
+    androidTestImplementation(libs.dexmakerMockito, excludes.bytebuddy) // DexMaker has it"s own MockMaker
     androidTestImplementation(project(":internal-testutils-truth")) // for assertThrows
     androidTestImplementation("androidx.arch.core:core-testing:2.0.1")
 
diff --git a/room/rxjava2/build.gradle b/room/rxjava2/build.gradle
index 2a9be6c..1594929 100644
--- a/room/rxjava2/build.gradle
+++ b/room/rxjava2/build.gradle
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
-import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension
 import androidx.build.Publish
 
 plugins {
@@ -29,10 +26,10 @@
     api(project(":room:room-common"))
     api(project(":room:room-runtime"))
     implementation("androidx.arch.core:core-runtime:2.0.1")
-    api(RX_JAVA)
+    api(libs.rxjava2)
 
-    testImplementation(JUNIT)
-    testImplementation(MOCKITO_CORE)
+    testImplementation(libs.junit)
+    testImplementation(libs.mockitoCore)
     testImplementation("androidx.arch.core:core-testing:2.0.1")
     testImplementation("androidx.lifecycle:lifecycle-livedata:2.0.0") // for mocking invalidation tracker
 }
diff --git a/room/rxjava3/build.gradle b/room/rxjava3/build.gradle
index bdb53b3..943fcb9 100644
--- a/room/rxjava3/build.gradle
+++ b/room/rxjava3/build.gradle
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
-import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension
 import androidx.build.Publish
 
 plugins {
@@ -29,10 +26,10 @@
     api(project(":room:room-common"))
     api(project(":room:room-runtime"))
     implementation("androidx.arch.core:core-runtime:2.0.1")
-    api(RX_JAVA3)
+    api(libs.rxjava3)
 
-    testImplementation(JUNIT)
-    testImplementation(MOCKITO_CORE)
+    testImplementation(libs.junit)
+    testImplementation(libs.mockitoCore)
     testImplementation("androidx.arch.core:core-testing:2.0.1")
     testImplementation("androidx.lifecycle:lifecycle-livedata:2.0.0") // for mocking invalidation tracker
 }
diff --git a/room/testing/build.gradle b/room/testing/build.gradle
index 71765ac..89bbeeb7 100644
--- a/room/testing/build.gradle
+++ b/room/testing/build.gradle
@@ -14,10 +14,7 @@
  * limitations under the License.
  */
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
-import androidx.build.LibraryVersions
-import androidx.build.AndroidXExtension
 import androidx.build.Publish
 
 plugins {
@@ -32,7 +29,7 @@
     api("androidx.sqlite:sqlite-framework:2.0.1")
     api(project(":room:room-migration"))
     implementation("androidx.arch.core:core-runtime:2.0.1")
-    api(JUNIT)
+    api(libs.junit)
 }
 
 androidx {
