遷移到version catalogs進行依賴項管理

遷移到version catalogs

一读宙、什么是version catalogs

version catalogs是Gradle 7.0引入的一種新特性,它可以讓您以可擴容的方式添加和維護依賴項和插件纬向。使用version catalogs琐谤,您可以在一個中央的TOML文件中定義依賴項和插件的名稱和版本磕蒲,然后在各個模塊中以類型安全的方式引用它們蓖乘。這樣可以避免在多個build文件中硬編碼依賴項名稱和版本,也可以方便地進行依賴項的升級和管理峦睡。

二翎苫、為什么要遷移到version catalogs

遷移到version catalogs有以下好處:

  • 提高build文件的可讀性和一致性,減少重復(fù)和冗余的代碼
  • 支持代碼補全和導(dǎo)航榨了,提高開發(fā)效率和準(zhǔn)確性
  • 方便地在一個地方管理依賴項和插件的版本煎谍,避免版本沖突和不匹配的問題
  • 支持多項目構(gòu)建和復(fù)用,提高構(gòu)建性能和穩(wěn)定性

傳統(tǒng)的方式是在gradle中定義幾個常量龙屉,這種方式雖然可以做到統(tǒng)一定義呐粘,但是不方便我們查找版本號
使用version catalogs可以ctrl+mouse left快速定位到依賴項定義處

三作岖、如何遷移到version catalogs

遷移到version catalogs的過程分為以下幾個步驟:

3.1 創(chuàng)建版本目錄文件

首先五芝,在根項目的gradle文件夾中枢步,創(chuàng)建一個名為libs.versions.toml的文件。Gradle默認會在這個文件中查找目錄矾瑰,因此我們建議使用這個默認名稱结蟋。在這個文件中嵌屎,添加以下部分:

[versions]
[libraries]
[plugins]

這些部分的含義如下:

  • 在versions代碼塊中,定義用于保存依賴項和插件版本的變量植榕。您可以在后續(xù)代碼塊(libraries和plugins代碼塊)中使用這些變量尊残。
  • 在libraries代碼塊中淤堵,定義依賴項。
  • 在plugins代碼塊中慰毅,定義插件扎阶。

3.2 遷移依賴項

在libs.versions.toml文件的versions和libraries部分,為每個依賴項添加一個條目东臀。同步您的項目,然后將build文件中的聲明替換為相應(yīng)的目錄名稱宰掉。

移除依賴項之前的build.gradle.kts文件:

dependencies {
    implementation("androidx.core:core-ktx:1.9.0")
}

在版本目錄文件(libs.versions.toml)中定義依賴項:

[versions]
ktx = "1.9.0"

[libraries]
androidx-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "ktx" }

在為目錄中的依賴項代碼塊命名時建議使用kebab case(例如androidx-ktx)赁濒,以便在build文件中獲得更好的代碼補全幫助。

在需要此依賴項的每個模塊的build.gradle文件中戚绕,按照您在TOML文件中定義的名稱定義依賴項枝冀。

dependencies {
    implementation(libs.androidx.ktx)
}

3.3 遷移插件

在libs.versions.toml文件的版本和插件部分果漾,為每個插件添加一個條目绒障。

同步您的項目,然后將build文件中plugins {}代碼塊內(nèi)的聲明替換為相應(yīng)的目錄名稱鸵钝。

移除插件之前的build.gradle文件:

// Top-level `build.gradle.kts` file
plugins {
    id("com.android.application") version "7.4.1" apply false
    id("com.android.library") version "7.4.1" apply false
    id("org.jetbrains.kotlin.android") version "1.5.31" apply false
}

在版本目錄文件(libs.versions.toml)中定義插件:

[versions]
androidGradlePlugin = "7.4.1"
kotlin = "1.5.31"

[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

與依賴項一樣变逃,在為plugins代碼塊目錄條目設(shè)置格式時建議使用kebab case(例如android-application)怠堪,以便在build文件中獲得更好的代碼補全幫助。

在頂級和模塊級build.gradle文件中定義com.android.application插件粟矿。對于來自版本目錄文件的插件陌粹,請使用alias;對于并非來自版本目錄文件的插件(例如慣例插件)绘证,請使用id嚷那。

// Top-level build.gradle
plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.android.library) apply false
    alias(libs.plugins.kotlin.android) apply false
}

// module build.gradle
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
}

注意:如果您使用的是低于8.1的Gradle版本,則需要在使用版本目錄時為plugins {}代碼塊添加注解(@Suppress("DSL_SCOPE_VIOLATION"))魏宽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市决乎,隨后出現(xiàn)的幾起案子队询,更是在濱河造成了極大的恐慌构诚,老刑警劉巖蚌斩,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件范嘱,死亡現(xiàn)場離奇詭異送膳,居然都是意外死亡,警方通過查閱死者的電腦和手機丑蛤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來受裹,“玉大人,你說我怎么就攤上這事厦章∶铺唬” “怎么了岩梳?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長也物。 經(jīng)常有香客問我列疗,道長滑蚯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任抵栈,我火速辦了婚禮告材,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘古劲。我一直安慰自己斥赋,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布产艾。 她就那樣靜靜地躺著疤剑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闷堡。 梳的紋絲不亂的頭發(fā)上隘膘,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音杠览,去河邊找鬼弯菊。 笑死,一個胖子當(dāng)著我的面吹牛踱阿,可吹牛的內(nèi)容都是我干的误续。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼扫茅,長吁一口氣:“原來是場噩夢啊……” “哼蹋嵌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起葫隙,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤栽烂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腺办,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡焰手,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了怀喉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片书妻。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖躬拢,靈堂內(nèi)的尸體忽然破棺而出躲履,到底是詐尸還是另有隱情,我是刑警寧澤聊闯,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布工猜,位于F島的核電站,受9級特大地震影響菱蔬,放射性物質(zhì)發(fā)生泄漏篷帅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一拴泌、第九天 我趴在偏房一處隱蔽的房頂上張望魏身。 院中可真熱鬧,春花似錦蚪腐、人聲如沸叠骑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宙枷。三九已至,卻和暖如春茧跋,著一層夾襖步出監(jiān)牢的瞬間慰丛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工瘾杭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诅病,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓粥烁,卻偏偏與公主長得像贤笆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子讨阻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容