相依性管理附帶豐富的術語。您可以在這裡找到最常使用的術語,包括使用者指南的參考,以瞭解其實際應用。

成品

建置產生的檔案或目錄,例如 JAR、ZIP 發行版或原生可執行檔。

成品通常設計為供使用者或其他專案使用或消費,或部署到主機系統。在這種情況下,成品是一個單一檔案。目錄在專案間相依性的情況下很常見,以避免產生可發佈成品的成本。

功能

功能識別由一個或多個組件提供的功能。功能由與用於模組版本的座標類似的座標識別。預設情況下,每個模組版本提供與其座標相符的功能,例如 com.google:guava:18.0。功能可用於表示組件提供多個功能變體,或表示兩個不同的組件實作相同的功能(因此無法一起使用)。如需更多詳細資訊,請參閱功能部分。

組件

任何單一版本的模組

對於外部函式庫,組件一詞是指函式庫的一個已發佈版本。

在建置中,組件由外掛程式定義(例如 Java 函式庫外掛程式),並提供定義出版品以進行發佈的簡單方式。它們包含人工製品以及適當的元資料,詳細描述組件的變體。例如,在其預設設定中的 java 組件包含一個 JAR — 由 jar 工作產生 — 以及 Java apiruntime 變體的相依性資訊。它也可以定義其他變體,例如 sourcesJavadoc,並附帶對應的人工製品。

組態

組態是一組已命名相依性,針對特定目標分組在一起。組態提供對基礎已解析的模組及其人工製品的存取。如需更多資訊,請參閱相依性組態以及可解析和可消耗組態部分。

「組態」一詞是一個超載詞,在相依性管理的脈絡之外有不同的意義。

相依性

相依性是指建置、測試或執行模組所需的另一段軟體的指標。如需更多資訊,請參閱宣告相依性部分。

相依性約束

相依性約束定義模組必須滿足的要求,才能成為相依性的有效解析結果。例如,相依性約束可以縮小支援的模組版本組。相依性約束可用於表示傳遞相依性的此類要求。如需更多資訊,請參閱升級降級傳遞相依性的部分。

功能變異

功能變異是一種變異,代表元件的功能,可以個別選擇或不選。功能變異由一個或多個功能識別。如需更多資訊,請參閱建模功能變異和選用相依性部分。

模組

隨著時間演進的軟體,例如Google Guava。每個模組都有名稱。模組的每個版本都以模組版本最佳呈現。為了方便使用,模組可以寄存於儲存庫中。

模組元資料

模組的版本提供元資料。元資料是更詳細描述模組的資料,例如關於人工製品位置或必要的傳遞相依性的資訊。Gradle 提供自己的元資料格式,稱為Gradle 模組元資料.module 檔案),但也支援 Maven(.pom)和 Ivy(ivy.xml)元資料。請參閱了解 Gradle 模組元資料部分,以取得更多關於支援的元資料格式的資訊。

元件元資料規則

元件元資料規則是一種規則,用於在從儲存庫擷取元件元資料後修改元件的元資料,例如新增遺漏的資訊或修正錯誤的資訊。與解析規則相反,元件元資料規則會在解析開始前套用。元件元資料規則定義為建置邏輯的一部分,而且可以透過外掛程式共用。如需更多資訊,請參閱使用元件元資料規則修正元資料部分。

模組版本

模組版本代表已發佈模組的特定變更組。例如,18.0 代表具有座標 com.google:guava:18.0 的模組版本。實際上,模組版本的配置並無限制。時間戳記、數字、特殊字尾(例如 -GA)都是允許的識別碼。使用最廣泛的版本編號策略是語意化版本編號

平台

平台是一組旨在共同使用的模組。有不同類別的平台,對應不同的使用案例

  • 模組組:通常是一組模組,作為一個整體發布。使用組中的其中一個模組通常表示我們希望對組中的所有模組使用相同的版本。例如,如果使用 groovy 1.2,也使用 groovy-json 1.2。

  • 執行時期環境:已知可以良好共同運作的一組函式庫。例如,Spring 平台,建議 Spring 和與 Spring 協同運作的元件的版本。

  • 部署環境:Java 執行時期、應用程式伺服器,…​

此外,Gradle 定義了 虛擬平台

Maven 的 BOM(物料清單)是一種流行的平台,Gradle 支援

發布

檔案和元資料的說明,應作為單一實體發布到儲存庫,供消費者使用。

發布有一個名稱,並包含一個或多個成品,以及關於這些成品的資訊(元資料)。

儲存庫

儲存庫會主機一組 模組,每個模組可能提供一個或多個版本(元件),由 模組版本 表示。儲存庫可以基於二進位儲存庫產品(例如 Artifactory 或 Nexus)或檔案系統中的目錄結構。如需更多資訊,請參閱 宣告儲存庫

解析規則

解析規則會影響 相依性如何直接解析的行為。解析規則定義為建置邏輯的一部分。如需更多資訊,請參閱 直接自訂相依性的解析 部分。

傳遞相依性

一個 元件 的變體可能依賴其他模組才能正常運作,稱為傳遞相依性。主機在 儲存庫 上的模組版本可以提供 元資料 來宣告這些傳遞相依性。預設情況下,Gradle 會自動解析傳遞相依性。傳遞相依性的版本選擇可以透過宣告 相依性限制 來影響。

變體(元件的)

每個 元件 都包含一個或多個變體。變體包含一組人工製品,並定義一組相依性。它會透過一組 屬性功能 來識別。

Gradle 的相依性解析會感知變體,並在選取元件(即模組的一個版本)後,選取每個元件的一個或多個變體。如果變體選取結果不明確,也就是說 Gradle 沒有足夠的資訊來選取多個互斥變體中的其中一個,它也可能會失敗。在這種情況下,可以透過 變體屬性 提供更多資訊。每個 Java 元件通常提供的變體範例包括 apiruntime 變體。其他範例包括 JDK8 和 JDK11 變體。如需更多資訊,請參閱 變體選取 部分。

變體屬性

屬性用於識別和選取 變體。變體有一個或多個已定義的屬性,例如 org.gradle.usage=java-apiorg.gradle.jvm.version=11。解析相依性時,會要求提供一組屬性,而 Gradle 會在相依性圖表中為每個元件找出最合適的變體。可以為屬性實作相容性和消除歧義規則,以表達值之間的相容性(例如 Java 8 與 Java 11 相容,但如果要求的版本是 11 或更高,則應優先選擇 Java 11)。此類規則通常由外掛程式提供。如需更多資訊,請參閱 變體選取宣告屬性 部分。