Hei! Nama saya Ksenia Kaisheva, saya menulis aplikasi Android di 65apps. Hari ini saya akan berbicara tentang fitur baru yang memungkinkan Anda untuk menggambarkan dependensi secara terpusat pada proyek dengan sistem pembangunan Gradle.
Saat ini, ada banyak opsi untuk menjelaskan dependensi dalam proyek menggunakan Gradle. Tidak ada standar yang direkomendasikan, sehingga berbagai pendekatan digunakan: seseorang hanya mencantumkan dependensi di blok dependensi , seseorang meletakkan dependensi dalam file terpisah, blok ext , dll. Dan untuk pengembang baru tidak selalu jelas apa, di mana dan bagaimana digunakan dalam proyek besar dan multi-modul.
Gradle versi ke-7 memperkenalkan fitur baru yang memungkinkan Anda mendeskripsikan semua dependensi secara terpusat. Fungsi ini pada tahap pratinjau, dan untuk menggunakannya di file settings.gradle (.kts) Anda perlu menambahkan baris:
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.