軟體專案很少獨立作業。專案通常仰賴函式庫中的可重複使用功能。有些專案會將不相關的功能整理到模組化系統的不同部分。

相依性管理是一種自動化技術,用於宣告、解析和使用專案所需的相依性。

如需相依性管理術語的概觀,請參閱相依性管理術語

Gradle 中的相依性管理

dependency management resolution
圖 1. 相依性管理概觀

Gradle 內建支援相依性管理。

讓我們透過一個理論上常見的專案來探討主要概念

  • 這個專案會建立 Java 原始碼。

  • 有些 Java 原始檔會從Google Guava函式庫匯入類別。

  • 這個專案使用JUnit進行測試。

Gradle 建置檔可能如下所示

build.gradle.kts
plugins {
    `java-library`
}

repositories { (1)
    google() (2)
    mavenCentral()
}

dependencies { (3)
    implementation("com.google.guava:guava:32.1.2-jre") (4)
    testImplementation("junit:junit:4.13.2")
}
build.gradle
plugins {
    id 'java-library'
}

repositories { (1)
    google() (2)
    mavenCentral()
}

dependencies { (3)
    implementation 'com.google.guava:guava:32.1.2-jre' (4)
    testImplementation 'junit:junit:4.13.2'
}
1 在這裡我們定義專案的存放庫。
2 在這裡我們宣告相依性位置的遠端和本機存放庫。

您可以宣告存放庫,告訴 Gradle 從何處擷取本機或遠端的相依性
在此範例中,Gradle 從Maven CentralGoogle存放庫擷取相依性
在建置過程中,Gradle 會找到並下載相依性,這個程序稱為相依性解析。然後 Gradle 會將解析的相依性儲存在稱為相依性快取的本機快取中。後續的建置會使用這個快取來避免不必要的網路呼叫,並加快建置程序。

3 在這裡我們定義專案使用的相依性。
4 我們在此宣告特定依賴項名稱和範圍內的版本。

您可以從外部程式庫(例如 com.google.common.base(Guava 套件))新增程式碼至 Java 專案,而該程式碼會成為依賴項
在此範例中,理論專案使用 Guava 版本 32.1.2-jre 和 JUnit 4.13.2 作為依賴項
建置工程師可以針對不同的範圍宣告依賴項。例如,您可以宣告僅在編譯時使用的依賴項。Gradle 稱依賴項的範圍組態

儲存庫以多種格式提供依賴項。如需有關 Gradle 支援的格式資訊,請參閱依賴項類型

元資料描述依賴項。元資料的一些範例包括

  • 在儲存庫中尋找依賴項的座標

  • 建立依賴項的專案資訊

  • 依賴項的作者

  • 依賴項正常運作所需的其它依賴項,稱為傳遞式依賴項

宣告數百個依賴項的專案可能難以除錯。Gradle 提供工具來視覺化和分析專案的依賴項圖表(即依賴項樹狀結構)。您可以使用Build Scan™內建任務

gradle core test build scan dependencies
圖 2. Build Scan 依賴項報告