Ei! Meu nome é Ksenia Kaisheva, eu escrevo aplicativos Android em 65apps. Hoje vou falar sobre um novo recurso que permite descrever de forma centralizada as dependências em projetos com o sistema de compilação do Gradle.
No momento, existem muitas opções para descrever dependências em projetos que usam o Gradle. Não existe um padrão recomendado, então uma variedade de abordagens são usadas: alguém simplesmente lista as dependências no bloco de dependências , alguém coloca as dependências em um arquivo separado, um bloco ext , etc. E para novos desenvolvedores nem sempre é óbvio o que, onde e como é usado em um projeto grande e com vários módulos.
A 7ª versão do Gradle apresenta um novo recurso que permite descrever todas as dependências de forma centralizada. Esta função está em estágio de visualização e para usá-la no arquivo settings.gradle (.kts) você precisa adicionar a linha:
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.