版本帝 Gradle 最新版本已經(jīng)到了 8.1.1 ,你是不是還在用著 Gradle 3 的功能?今天我們了解一下 Gradle 7.0 之后推出的新功能 Version Catalog 版本目錄。
0. 概述
Gradle 版本目錄是 Gradle7 中引入的新功能。使用 Gradle 版本目錄,您可以在擁有多個(gè)模塊時(shí)更輕松地管理依賴項(xiàng)和插件。您不必對(duì)各個(gè) build 文件中的依賴項(xiàng)名稱和版本進(jìn)行硬編碼,也不必在每次需要升級(jí)依賴項(xiàng)時(shí)都更新每個(gè)條目,而是可以創(chuàng)建一個(gè)包含依賴項(xiàng)的中央版本目錄。
1. 創(chuàng)建版本目錄文件
首先創(chuàng)建一個(gè)版本目錄文件。在根項(xiàng)目的 gradle
文件夾中,創(chuàng)建一個(gè)名為 libs.versions.toml
的文件。Gradle 默認(rèn)會(huì)在 libs.versions.toml
文件中查找目錄,因此我們建議使用此默認(rèn)名稱。
注意:您可以更改目錄文件名;但是,這需要更改 build 文件,因此不建議這樣做。
在 libs.versions.toml
文件中,添加以下內(nèi)容:
[versions]
[libraries]
[bundles]
[plugins]
versions
部分用于聲明可以被依賴項(xiàng)引用的版本libraries
部分用于聲明坐標(biāo)的別名bundles
部分用于聲明依賴包plugins
部分用于聲明插件
2. 遷移依賴項(xiàng)
先看一下之前我們是如何引入依賴項(xiàng)的:
dependencies {
implementation 'com.jcraft:jsch:0.1.55'
}
遷移到版本目錄后的引入方式:
# libs.versions.toml 文件
[versions]
jsch = "0.1.55"
[libraries]
jsch = { group = "com.jcraft", name = "jsch", version.ref = "jsch" }
# build.gradle 文件
dependencies {
implementation libs.jsch
}
3. 別名規(guī)范
從上面的簡(jiǎn)單例子中,我們可以從libs
中通過別名jsch
獲取 jsch 的依賴項(xiàng)。下面介紹幾種復(fù)雜的例子:
別名 | 訪問名稱 |
---|---|
guava | libs.guava |
commons-lang3 | libs.commons.lang3 |
androidx.awesome.lib | libs.androidx.awesome.lib |
在聲明依賴項(xiàng)的別名時(shí)建議使用
kebab-case
(例如 commons-lang3),以便在 build 文件中獲得更好的代碼補(bǔ)全幫助。
4. 打包依賴項(xiàng)
如果有多個(gè)依賴項(xiàng)強(qiáng)關(guān)聯(lián),必須同時(shí)引用的情況,如下:
dependencies {
implementation 'org.junit.jupiter:junit-jupiter-api:5.9.3'
implementation 'org.junit.jupiter:junit-jupiter-engine:5.9.3'
implementation 'org.junit.jupiter:junit-jupiter-params:5.9.3'
}
我們可以在libs.versions.toml
文件中使用bundles
將其打成一個(gè)包:
[versions]
jupiter = "5.9.3"
[libraries]
junit-jupiter-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "jupiter" }
junit-jupiter-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "jupiter" }
junit-jupiter-params = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "jupiter" }
[bundles]
junit-jupiter = ["junit-jupiter-api", "junit-jupiter-engine", "junit-jupiter-params"]
然后在build.gradle中引用:
dependencies {
implementation libs.junit.jupiter
}
5. 遷移插件
遷移插件與依賴項(xiàng)的遷移一樣,在 libs.versions.toml
文件的 [versions] 和 [plugins] 部分,為每個(gè)插件添加一個(gè)條目。然后將 build.gradle
文件中 plugins{} 代碼塊內(nèi)的聲明替換為相應(yīng)的目錄名稱。
以下代碼段展示了移除插件之前的 build.gradle
文件:
plugins {
id("com.android.application")
}
遷移后:
[versions]
androidGradlePlugin = "7.4.1"
[plugins]
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
plugins {
id(libs.plugins.android.application)
}
6. 小結(jié)
以上就是對(duì) Gradle 版本目錄功能的簡(jiǎn)單應(yīng)用,統(tǒng)一管理依賴項(xiàng)版本,十分方便。
-
模塊
+關(guān)注
關(guān)注
7文章
2731瀏覽量
47714 -
編碼
+關(guān)注
關(guān)注
6文章
957瀏覽量
54946 -
插件
+關(guān)注
關(guān)注
0文章
335瀏覽量
22484 -
gradle
+關(guān)注
關(guān)注
0文章
26瀏覽量
740
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論