おい!私の名前は Ksenia Kaisheva です。65apps で Android アプリケーションを作成しています。今日は、Gradle ビルド システムでプロジェクトの依存関係を一元的に記述できる新機能についてお話します。
現時点では、Gradle を使用してプロジェクトの依存関係を記述するための多くのオプションがあります。推奨される標準はないため、さまざまなアプローチが使用されます: 依存関係を単に依存関係ブロックにリストする人もいれば、依存関係を別のファイルやextブロックに配置する人もいます。そして、新しい開発者にとって、大規模なマルチモジュール プロジェクトで、何が、どこで、どのように使用されているかは必ずしも明らかではありません。
Gradle の 7 番目のバージョンでは、すべての依存関係を一元的に記述できる新しい機能が導入されています。この関数はプレビュー段階にあり、settings.gradle (.kts)ファイルで使用するには、次の行を追加する必要があります。
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.