軟體專案通常依賴其他函式庫才能運作。這些函式庫可以來自同一個建置中的其他專案,也可以來自外部儲存庫。
Gradle 的相依性管理基礎架構提供 API,用於宣告、解析和公開專案所需和提供的二進制檔案。
了解 Gradle 中的相依性管理對於將專案結構化為組件非常重要。當您想要重複使用現有的函式庫,或者您需要升級這些函式庫同時管理其版本時,這也很重要。
讓我們看看一個 Java 專案,其中的程式碼依賴 Guava,它是 Google Java 核心函式庫套件。該專案的建置檔包含以下內容
build.gradle.kts
dependencies {
implementation("com.google.guava:guava:32.1.2-jre")
api("org.apache.juneau:juneau-marshall:8.2.0")
}
build.gradle
dependencies {
implementation("com.google.guava:guava:32.1.2-jre")
api("org.apache.juneau:juneau-marshall:8.2.0")
}
在 dependencies
區塊中,宣告相依性時有三件事需要注意
-
配置:
implementation
也稱為相依性套用的範圍 -
模組 ID:
com.google.guava:guava
由group
和成品name
組成,它們是唯一可識別的 -
版本:
32.1.2-jre
並非總是必需
相依性可以是本地或外部的。若要讓 Gradle 知道在哪裡找到外部相依性,請使用 建置檔 中的 repositories{}
區塊。
讓我們擴展我們的範例
build.gradle.kts
repositories {
google()
mavenCentral()
}
dependencies {
implementation("com.google.guava:guava:32.1.2-jre")
api("org.apache.juneau:juneau-marshall:8.2.0")
}
build.gradle
repositories {
google()
mavenCentral()
}
dependencies {
implementation("com.google.guava:guava:32.1.2-jre")
api("org.apache.juneau:juneau-marshall:8.2.0")
}
在此範例中,Gradle 從 Maven Central 和 Google 儲存庫 取得 guava
和 juneau-marshall
相依性。
4. 集中管理相依性
為了將相依性及其版本宣告在單一、可管理的位置(即集中式),您可以使用平台和版本目錄。
平台是一組旨在一起使用的模組。版本目錄是可以多個專案中引用的集中式相依性坐標列表。
6. 了解相依性解析
為了影響 Gradle 如何解析相依性,了解其運作方式非常重要。本節涵蓋變體、屬性、功能和相依性快取。
7. 控制相依性解析
一旦您掌握了相依性解析的工作原理,您就可以檢視、控制和影響它。本節涵蓋圖形和成品解析,以及成品轉換。