軟體專案通常依賴其他函式庫才能運作。這些函式庫可以來自同一個建置中的其他專案,也可以來自外部儲存庫。

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 區塊中,宣告相依性時有三件事需要注意

  1. 配置:implementation 也稱為相依性套用的範圍

  2. 模組 ID:com.google.guava:guavagroup 和成品 name 組成,它們是唯一可識別的

  3. 版本: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 CentralGoogle 儲存庫 取得 guavajuneau-marshall 相依性

1. 基礎知識

如果您想了解相依性管理的基礎知識,並且您是 Gradle 的新手,請從這裡開始。

2. 宣告相依性

您可以將外部函式庫新增至您的 Java 專案,例如 Guava。這些函式庫是您專案的相依性。它們是使用建置檔中的 dependencies{} 區塊新增的。

3. 宣告儲存庫

您可以宣告儲存庫,以告知 Gradle 從哪裡取得外部相依性。在建置期間,Gradle 會定位並下載相依性,這個過程稱為相依性解析

4. 集中管理相依性

為了將相依性及其版本宣告在單一、可管理的位置(即集中式),您可以使用平台版本目錄

平台是一組旨在一起使用的模組。版本目錄是可以多個專案中引用的集中式相依性坐標列表。

5. 管理相依性

當同一個函式庫被多次宣告,或不同的函式庫提供相同的功能時,可能會發生衝突。這通常會導致建置失敗。

您可以使用解析規則相依性鎖定來管理衝突。

6. 了解相依性解析

為了影響 Gradle 如何解析相依性,了解其運作方式非常重要。本節涵蓋變體、屬性、功能和相依性快取。

7. 控制相依性解析

一旦您掌握了相依性解析的工作原理,您就可以檢視、控制和影響它。本節涵蓋圖形和成品解析,以及成品轉換。

8. 發佈函式庫

如果您正在考慮發佈您的函式庫以作為相依性使用,請查看我們的發佈章節