¡Oye! Mi nombre es Ksenia Kaisheva, escribo aplicaciones de Android en 65apps. Hoy hablaré sobre una nueva característica que le permite describir de manera centralizada las dependencias en proyectos con el sistema de compilación Gradle.
Por el momento, hay muchas opciones para describir dependencias en proyectos que usan Gradle. No existe un estándar recomendado, por lo que se utilizan varios enfoques: alguien simplemente enumera las dependencias en el bloque de dependencias , alguien coloca las dependencias en un archivo separado, un bloque ext , etc. Y para los nuevos desarrolladores no siempre es obvio qué, dónde y cómo se usa en un proyecto grande y de varios módulos.
La séptima versión de Gradle presenta una nueva función que le permite describir todas las dependencias de forma centralizada. Esta función está en la etapa de vista previa, y para usarla en el archivo settings.gradle (.kts) necesita agregar la línea:
enableFeaturePreview("VERSION_CATALOGS")
( ) build.gradle :
dependencies {
implementation libs.lifecycle.runtime
implementation libs.lifecycle.viewmodel.ktx
implementation libs.lifecycle.extentions
implementation libs.lifecycle.livedata.ktx
}
:
libs —
lifecycle.runtime — .
settings.gradle(.kts) :
dependencyResolutionManagement {
versionCatalogs {
libs {
alias('lifecycle-runtime').to('androidx.lifecycle:lifecycle -runtime:2.2.0')
alias('lifecycle-viewmodel-ktx').to('androidx.lifecycle', 'lifecycle-viewmodel-ktx')
.version {
strictly '[2.2.0, 2.3.0['
prefer '2.3.1'
}
}
}
}
(alias) , , .
.
, . .
,
lifecycle-runtime
lifecycle_runtime
lifecycle.runtime
junit5-test-core
spek-runner-junit5
, . , lifecycle-viewmodel lifecycle-viewmodel-ktx.
Gradle .
, lifecycleViewmodel lifecycleViewmodelKtx.
:
dependencyResolutionManagement {
versionCatalogs {
libs {
version('lifecycle', '2.3.1')
alias('lifecycle-viewmodel-ktx').to('androidx.lifecycle', 'lifecycle-viewmodel-ktx')
.versionRef('lifecycle')
}
}
}
build.gradle :
version = libs.versions.lifecycle.get()
, . . — :
dependencyResolutionManagement {
versionCatalogs {
libs {
version('lifecycle', '2.3.1')
alias('lifecycle-runtime').to(
'androidx.lifecycle’, ' lifecycle -runtime').versionRef(' lifecycle ')
alias ('lifecycle-viewmodel-ktx').to(
'androidx.lifecycle’, ' lifecycle -viewmodel - ktx').versionRef(' lifecycle ')
bundle ('lifecycle', ['lifecycle-runtime', 'lifecycle-viewmodel-ktx']
)
}
}
}
:
dependencies {
implementation libs.bundles.lifecycle
}
.
settings.gradle(.kts) , — toml- gradle: libs.versions.toml.
, .
libs.versions.toml libs . , :
dependencyResolutionManagement {
defaultLibrariesExtensionName.set('deps')
}
Toml- 3 :
[versions] -
[libraries] -
[bundles] -
,
[versions]
lifecycle = "2.3.1"
[libraries]
lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime", version.ref = "lifecycle" }
lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle" }
[bundles]
dagger = ["lifecycle-runtime", "lifecycle-viewmodel-ktx"]
, , , :
[versions]
any-lib1 = ‘1.0’
any-lib2 = { strictly = "[1.0, 2.0[", prefer = "1.2" }
, :
[libraries]
any-lib = "com.company:anylib:1.4"
any-other-lib = { module = "com.company:other", version="1.4" }
any-other-lib2 = { group = "com.company", name="alternate", version="1.4" }
anylib-full-format = { group = "com.company", name="alternate", version={ require = "1.4" } }
, [versions] , version.ref:
[versions]
some = "1.4"
[libraries]
any-lib = { group = "com.company", name="anylib", version.ref="some" }
toml-. , :
dependencyResolutionManagement {
versionCatalogs {
testLibs {
from(files('gradle/test-libs.versions.toml'))
}
}
}
, .
Groovy build.gradle , , . . — Kotlin DSL.