Gradle 中的不同依賴版本聲明
一、概述
Gradle 是 JVM 項目最流行的構建工具之一。它提供了多種方式來聲明和控制我們的依賴版本。
在這個簡短的教程中,我們將了解如何在 Gradle 中定義最新的依賴項版本。
首先,我們將研究我們可能想要定義依賴項版本的不同方式。然後,我們將創建一個小的 Gradle 項目,我們將在其中指定一些第三方庫。最後,我們將分析 Gradle 的依賴樹,看看 Gradle 如何處理不同的版本聲明。
2.聲明版本
2.1.確切版本
這是聲明依賴版本最直接的方式。我們所要做的就是指定我們要在我們的應用程序中使用的確切版本,例如1.0
。
大多數官方依賴項通常只使用數字版本,例如3.2.1.
但是,依賴版本是一個字符串,因此它也可以包含字符。例如,有一個5.2.22.RELEASE
版本的 Spring。
2.2. Maven 風格的版本範圍
如果我們不想指定一個確切的依賴版本,我們可以使用 Maven 風格的版本範圍,例如[1.0, 2.0), (1.0, 2.0].
方括號[
和]
表示包含邊界。相反,圓括號(
和)
表示排他性綁定。更重要的是,我們可以在版本聲明中混合使用不同的括號。
2.3.前綴/通配符版本範圍
我們可以使用 + 通配符來指定依賴版本範圍——例如, 1.+.
Gradle 將查找其版本與+
通配符之前的部分完全匹配的依賴項。
2.4.使用latest
版本關鍵字
Gradle 提供了兩個我們可以用於任何依賴項的特殊版本關鍵字:
-
latest.integration
將匹配最高版本的 SNAPSHOT 模塊 -
latest.release
將匹配最高版本的非 SNAPSHOT 模塊
3. 版本範圍優缺點
使用 Maven 風格或通配符版本範圍作為依賴版本可能很有用。但是,我們必須考慮這種方法的優點和缺點。
版本範圍的最大優點是我們始終擁有最新的可用依賴項。我們不必在每次構建應用程序時都搜索新的依賴項版本。
然而,始終擁有最新的依賴項可能也是一個很大的缺點。我們的應用程序可能在一個構建與下一個構建之間表現不同,只是因為我們在應用中使用的某些第三方依賴項的新版本在我們沒有意識到的情況下改變了版本之間的行為。
根據我們的要求,為依賴項指定版本範圍可能會有所幫助。儘管如此,在使用依賴項之前,我們必須小心並確定依賴項遵循的是哪種版本控制算法。
4. 創建測試應用
讓我們創建一個簡單的 Gradle 應用程序來嘗試一些具有不同版本聲明的依賴項。
我們的應用程序將只包含一個文件build.gradle
:
plugins {
id 'java'
}
group = "com.baeldung.gradle"
version = "1.0.0-SNAPSHOT"
sourceCompatibility = JavaVersion.VERSION_17
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
}
接下來,我們將添加一些具有不同版本聲明的[org.apache.commons](https://mvnrepository.com/artifact/org.apache.commons)
依賴項。
讓我們從最簡單的開始,確切的版本:
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
現在,讓我們使用 Maven 風格的版本範圍:
implementation group: 'org.apache.commons', name: 'commons-math3', version: '[3.4, 3.5)'
在這裡我們指定,我們想要一個commons-math3
依賴項,其版本在 3.4 到 3.5 之間。
下一個依賴項將使用通配符版本範圍:
implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.+'
我們想要最新的commons-collections4
依賴,其版本與4.
前綴匹配。
最後,讓我們使用 Gradle latest.release
關鍵字:
implementation group: 'org.apache.commons', name: 'commons-text', version: 'latest.release'
這是build.gradle
文件中的完整依賴項部分:
dependencies {
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
implementation group: 'org.apache.commons', name: 'commons-math3', version: '[3.4, 3.5)'
implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.+'
implementation group: 'org.apache.commons', name: 'commons-text', version: 'latest.release'
}
現在,讓我們看看 Gradle 如何解析我們的版本聲明。
5.顯示依賴樹
讓我們使用 Gradle dependencies
任務來查看依賴項報告:
$ gradle dependencies
compileClasspath - Compile classpath for source set 'main'.
+--- org.apache.commons:commons-lang3:3.12.0
+--- org.apache.commons:commons-collections4:4.+ -> 4.4
+--- org.apache.commons:commons-math3:[3.4, 3.5) -> 3.4.1
\--- org.apache.commons:commons-text:latest.release -> 1.10.0
在撰寫本文時,與指定範圍匹配的最新commons-math3
依賴版本為3.4.1.
我們可以看到 Gradle 使用了那個版本。
此外, 4.4
是與4.+
通配符匹配的最新commons-collections4
版本。
同樣, 1.10.0
是commons-text
依賴項的最新版本。
六,結論
在本文中,我們學習瞭如何以各種方式在 Gradle 中聲明依賴版本。
首先,我們了解瞭如何在 Gradle 構建腳本中指定確切的依賴項版本以及版本範圍。然後,我們嘗試了幾種表達依賴關係的方法。
最後,我們檢查了 Gradle 如何解析這些版本。
與往常一樣,示例代碼在 GitHub 上可用。