Gradle 中的依赖项解析很大程度上可以被认为是一个两步过程。
首先,图解析阶段基于声明的依赖项构建依赖关系图。 其次,构件解析阶段获取已解析组件的实际文件(构件)
-
图解析阶段:
-
由声明的依赖项及其元数据驱动
-
使用正在解析的配置定义的请求属性
-
-
构件解析阶段:
-
基于已解析依赖关系图中的节点
-
将每个节点匹配到一个变体和一个构件
-
这些过程的结果可以通过不同的 API 访问,每个 API 专为特定用例而设计。
1. 图解析
在图解析阶段,Gradle 下载并分析声明的和传递依赖项的组件元数据(GMM、POM 或 Ivy XML)。 此信息用于构建依赖关系图,该图对不同组件及其变体之间的关系进行建模。 您可以在理解依赖项解析模型中了解有关如何构建图的更多信息。
ResolutionResult
API 表示图解析阶段的输出,提供对已解析依赖关系图的访问,而无需触发构件下载。 该图本身侧重于组件变体,而不是与这些变体关联的构件(文件)
-
ResolvedComponentResult
- 表示原始依赖关系图中的已解析组件。 -
ResolvedVariantResult
- 表示原始依赖关系图中的组件的已解析变体。
请参阅图解析以了解更多信息。
2. 构件解析
一旦依赖关系图被解析,构件解析阶段将确定需要下载或检索哪些实际文件(构件)。
ArtifactView
在已解析图的顶部运行,由ResolutionResult
定义。 它允许您根据属性查询特定构件。 在图解析期间使用的相同属性通常指导构件选择。
ArtifactView
API 提供了灵活的方式来访问这些已解析的构件
-
FileCollection
- 平面文件列表,这是使用已解析构件的最常见方式。 -
ArtifactCollection
- 提供对已解析构件的元数据和文件的访问,从而允许更高级的构件处理。
请参阅构件解析以了解更多信息。
控制解析
ArtifactTransform
在依赖项解析期间修改构件的内容,例如将 JAR 文件转换为自定义格式。
ArtifactView
允许自定义构件选择过程,例如过滤组件或请求触发构件转换的属性。
当一起使用时
-
注册
ArtifactTransform
以处理构件。 -
配置
ArtifactView
以基于与原始图不同的属性选择构件。 -
通过
ArtifactView
查询转换后的构件以访问或处理转换后的文件。
下一步: 了解有关图解析的更多信息 >>