Gradle 中的相依性解析大致可以視為兩個步驟的過程。

首先,「圖形解析」階段根據宣告的相依性建構相依性圖形。其次,「Artifact 解析」階段擷取已解析元件的實際檔案 (Artifacts)

  1. 圖形解析階段:

    • 由宣告的相依性及其元資料驅動

    • 使用正在解析的配置所定義的請求屬性

  2. Artifact 解析階段:

    • 基於已解析相依性圖形中的節點

    • 將每個節點與變體和 Artifact 匹配

這些過程的結果可以透過不同的 API 存取,每個 API 都為特定的使用案例而設計。

1. 圖形解析

在「圖形解析」階段,Gradle 會下載並分析組件元資料 (GMM、POM 或 Ivy XML),以了解宣告的和傳遞的相依性。此資訊用於建構「相依性圖形」,該圖形模擬不同組件及其變體之間的關係。您可以在理解相依性解析模型中了解圖形是如何建構的。

ResolutionResult API 代表圖形解析階段的輸出,提供對已解析相依性圖形的存取權,而不會觸發 Artifact 下載。圖形本身側重於組件變體,而不是與這些變體相關聯的 Artifacts (檔案)

請參閱圖形解析以了解更多資訊。

2. Artifact 解析

一旦「相依性圖形」被解析,「Artifact 解析」階段會決定需要下載或檢索哪些實際檔案 (Artifacts)。

ArtifactView 在已解析的圖形之上運作,由 ResolutionResult 定義。它允許您根據屬性查詢特定的 Artifacts。在「圖形解析」期間使用的相同屬性通常會引導 Artifact 選擇。

ArtifactView API 提供彈性的方式來存取這些已解析的 Artifacts

  • FileCollection - 檔案的平面列表,這是使用已解析 Artifacts 最常見的方式。

  • ArtifactCollection - 提供對已解析 Artifacts 的元資料和檔案的存取權,從而實現更進階的 Artifact 處理。

請參閱Artifact 解析以了解更多資訊。

控制解析

ArtifactTransform 在相依性解析期間修改 Artifact 的內容,例如將 JAR 檔案轉換為自訂格式。

ArtifactView 允許自訂 Artifact 選擇過程,例如篩選組件或請求觸發 Artifact 轉換的屬性。

一起使用時

  1. 註冊 ArtifactTransform 以處理 Artifacts。

  2. 配置 ArtifactView 以根據與原始圖形不同的屬性選擇 Artifacts。

  3. 透過 ArtifactView 查詢轉換後的 Artifacts,以存取或處理轉換後的檔案。

請參閱Artifact 檢視Artifact 轉換以了解更多資訊。

下一步: 了解「圖形解析」 >>