Gradle 中的相依性解析大致可以視為兩個步驟的過程。
首先,「圖形解析」階段根據宣告的相依性建構相依性圖形。其次,「Artifact 解析」階段擷取已解析元件的實際檔案 (Artifacts)
-
圖形解析階段:
-
由宣告的相依性及其元資料驅動
-
使用正在解析的配置所定義的請求屬性
-
-
Artifact 解析階段:
-
基於已解析相依性圖形中的節點
-
將每個節點與變體和 Artifact 匹配
-
這些過程的結果可以透過不同的 API 存取,每個 API 都為特定的使用案例而設計。
1. 圖形解析
在「圖形解析」階段,Gradle 會下載並分析組件元資料 (GMM、POM 或 Ivy XML),以了解宣告的和傳遞的相依性。此資訊用於建構「相依性圖形」,該圖形模擬不同組件及其變體之間的關係。您可以在理解相依性解析模型中了解圖形是如何建構的。
ResolutionResult
API 代表圖形解析階段的輸出,提供對已解析相依性圖形的存取權,而不會觸發 Artifact 下載。圖形本身側重於組件變體,而不是與這些變體相關聯的 Artifacts (檔案)
-
ResolvedComponentResult
- 代表原始相依性圖形中已解析的組件。 -
ResolvedVariantResult
- 代表原始相依性圖形中組件的已解析變體。
請參閱圖形解析以了解更多資訊。
2. Artifact 解析
一旦「相依性圖形」被解析,「Artifact 解析」階段會決定需要下載或檢索哪些實際檔案 (Artifacts)。
ArtifactView
在已解析的圖形之上運作,由 ResolutionResult
定義。它允許您根據屬性查詢特定的 Artifacts。在「圖形解析」期間使用的相同屬性通常會引導 Artifact 選擇。
ArtifactView
API 提供彈性的方式來存取這些已解析的 Artifacts
-
FileCollection
- 檔案的平面列表,這是使用已解析 Artifacts 最常見的方式。 -
ArtifactCollection
- 提供對已解析 Artifacts 的元資料和檔案的存取權,從而實現更進階的 Artifact 處理。
請參閱Artifact 解析以了解更多資訊。
控制解析
ArtifactTransform
在相依性解析期間修改 Artifact 的內容,例如將 JAR 檔案轉換為自訂格式。
ArtifactView
允許自訂 Artifact 選擇過程,例如篩選組件或請求觸發 Artifact 轉換的屬性。
一起使用時
-
註冊
ArtifactTransform
以處理 Artifacts。 -
配置
ArtifactView
以根據與原始圖形不同的屬性選擇 Artifacts。 -
透過
ArtifactView
查詢轉換後的 Artifacts,以存取或處理轉換後的檔案。
請參閱Artifact 檢視和Artifact 轉換以了解更多資訊。
下一步: 了解「圖形解析」 >>