- Published on
Version Catalog Documentation
- Authors

- Name
- Patricia Dumontier
- X
- @polyglotmaster
The [Version Catalog] provides a shared list of dependency versions for a KMM project.
Contents
The catalog VERSION_NAME is defined in [gradle.properties].
VERSION_NAME = 0.1.0
Dependency and version definitions are found in the [root build.gradle.kts file]. The catalog consists of three sections:
1. Versions
Version definitions can be shared by multiple dependencies. Definitions consist of a tag and a semantic version string:
version("android", "7.3.1")
2. Plugins
Defines an alias, id, and version definition for each plugin dependency. Version definitions should always be declared as a versionRef, referencing a version defined in Section 1. Multiple related dependencies may reference the same versionRef.
plugin("androidApplication", "com.android.application").versionRef("android")
plugin("androidLibrary", "com.android.library").versionRef("android")
...
3. Libraries
Defines an alias, id, and version definition for each library dependency. Version definitions should always be declared as a versionRef, referencing a version defined in Section 1. Multiple related dependencies may reference the same versionRef.
library("<library-name-A>", "com.<company>.auth", "auth-shared").versionRef("<library-name>")
library("<library-name-B>", "com.<company>.auth", "auth-android").versionRef("<library-name>")
...
Usage
KMM projects can use the version catalog by adding the versionCatalogs block to the dependencyResolutionManagement section of settings.gradle.kts:
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from("com.<company>.version-catalog:version-catalog:0.1.0")
}
}
}
Dependencies can the be declared by referencing the version catalog via libs:
plugins {
with(libs.plugins){
alias(androidLibrary)
alias(kotlinMultiplatform)
...
}
}
...
dependencies {
with(libs){
implementation(kotlinxCoroutines)
...
}
}
Version Override
To override a version defined in the version catalog with a new value, add the new version definition in settings.gradle.kts:
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from("com.<company>.version-catalog:version-catalog:0.1.0")
version("<library-name>", "1.2.3-local") // Override's the library's version with "1.2.3-local"
}
}
}