Gradle 依赖管理机制中的基本概念

gradle 官方用户指南: https://docs.gradle.org/current/userguide/dependency_management_terminology.html

  Artaifact:

    由构建生成的文件或目录,例如一个jar,一个zip发布包或本地可执行文件。

    Artifact(工件) 被设计用来供用户或其他项目使用,或者被部署到托管系统(hosting systems)上,在这种情况下,工件是一个单独的文件,目录形式在项目间依赖(inter-projectdependencies)的情况下很常见,以避免生成发布的工件的消耗。

Capability:

    功能标识一个或多个组件提供的特性。功能是通过类似于模块版本(module version)使用的坐标来标识的,默认情况下,每个模块版本(模块依赖)都提供了匹配其他坐标的功能,例如,com.google.guava:18.0.功能可以用来表示一个组件提供了多个·特性变体,或者两个不同的组件实现了相同的特性(因此不能一起使用),有关更多技术细节,请参阅有关功能的部分。

Component:

    一个模块(module)的任何一个版本。

   对于外部库,组件这个概念指的是一个已发布版本。

  在构建中,组件由插件(例如JavaLibrary库插件)定义,并提供一种简单的方式来定义发布(a publicationfor publishing)。它包括工件以及详细描述组件变体的恰当元数据信息,例如,java组件在其默认设置中由jar(由Jar 任务生成)和java api 和runtime 变体的依赖项信息组成,它还可以定义带有相应工件的其他变体,例如resource和javadoc.

Configuration:

   配置是为特定目标(依赖项的使用范围)组合在一起的一组被命名的依赖项,配置提供对底层已解析模块以及其工件的访问,更多信息,可以参看有关依赖配置以及可解析消息配置的部分。

   configuration 是一个重载的概念,在依赖管理上下文语境外有不同的含义。

Dependency:

  依赖是指向构建,测试或运行模块所需的另一部分软件的指针。有关更多信息,可以参看依赖项一节。

Dependency constraint:

  依赖约束定义模块需要满足的需求,从而使其成为依赖项的有效的解析结果,例如,依赖约束可以缩小支持的模块版本集合的范围,依赖约束可以用于表述传递依赖的此类需求。有关更多信息,可以参见有关上传和下载传递依赖关系的部分。

Feature Variant:

  特性变体是表示可以单独选择或不选择的组件特性变体。特性变体由一个或多个功能来标识,有关更多信息可以参见建模特性变体和可选依赖项部分。

Module:
 一个会随时间变化的软件,如Google Guava,每个模块都有一个名称,模块的每个版本都由一个模块版本最优的表示。为了方便使用,可以将模块托管在存储仓上。

Module metadata:

   模块的发布需要提供元数据,元数据可以更详细地描述模块的数据,例如关于工件位置或所需传递依赖关系的信息。Gradle 提供了自己的元数据格式,称为 Gradle Module Metadata(.module file),还支持Maven(.pom)和lvy(lvy.xml) 元数据,有关支持的元数据格式的更新信息,参考理解GradleModule Metadata.

Component metadata rule:

  组件元数据规则是从存储仓库上获取组件的元数据后,对其进行修改的规则,例如添加丢失的信息或纠正错误的信息。与解析规则相反,组件元数据规则在解析开始之前应用。组件元数据规则被定义为构建逻辑的一部分。可以通过插件共享,有关更多信息,请参见关于使用组件元数据规则修复元数据的部分。

Module Version:

  模块版本表示已发布模块的一组不同的更改,例如,坐标为com.google.guava:18.0,其中18.0 表示模块的版本。在实践中,对模块版本的模式没有限制。时间戳(Timestamps),数字(numbers),特殊后缀(special 后缀如GA)都是允许的标识符。最广泛使用的版本话语策略是语义版本化。

Platform

  平台是一组旨在一起使用的Module,平台有不同的类别,对应不同的用例:

   模块集(moduleset):通常是作为一个整体发布的一组模块。使用集合的一个模块通常意味着我们希望对集合的所有模块使用相同的版本。例如。如果使用Groovy 1.2,同时也推荐使用 Groovy-json 1.2.

  运行时环境(runtimeenvironment):一组已知可以很好协同工作的库,例如,Spring 平台,推荐Spring 和Spring 一起工作的组件的版本。

  部署环境:Java运行时,应用服务器。

  此外,Gradle 还定义了虚拟平台。

  Tips:

 Maven 的Bom (材料清单)是Gradle 支持的一种流行的平台。

Publication:

 应该作为单个实体发布到存储仓上供消费者使用的文件和元数据的描述,每个publication 都有一个名称,以及由一个或多个工件以及关于这些工件(元数据)的信息组成。

Repository:

  存储仓承载一组模块,每个模块可以提供一个或多个由模块版本指示的已发布的组件。存储仓可以基于二进制存在仓产品(例如 Artifactroy 或Nexus)或文件系统中的目录结构,有关更多信息,可以参见声明存储仓。

Resolution rule:

  解析规则影响直接解析依赖项的行为。解析规则被定义为构建逻辑的一部分。有关更多信息,请参见直接自定义依赖项的解决方案一节。

Transitive dependency:

  组件的变体可以在依赖于其他模块以正常工作,即所谓的传递依赖关系,托管在存储仓上的模块的发布可以提供元数据来声明这些传递依赖关系。默认情况下,Gradle 自动解决传递依赖关系,传递依赖关系的版本选择可以通过声明依赖关系约束来影响。

Variant(of  a  component)

 每个组件由一个或多个变体组成。变体由一组工件组成,并定义一组依赖项,它由一组属性和功能来标识。

 Gradle 的依赖解析是可变的,并在选择组件(即模块的一个版本)后选择每个组件的一个或多个变体。如果变体选择结果不明确,也就是说Gradle 没有足够的信息来选择多个相互排斥的变量中的一个,那么它也可能失败。在这种情况下,可以通过变体属性来提供更多的信息。每个java组件通常提供的变体实例是api和runtime变体,其他实例如jdk8和jdk11 变体。有关更多信息,请参看变体选择一章。

Variant Attribute:

 属性用于识别和选择变体。变体定义了一个或多个属性,例如 org.gradle.usage=java-api, org.gradle.jvm.version=11 ,当依赖关系被解析时,需要一组属性,并且Gradle 为依赖关系图中的每个组件找到最佳匹配的变体。兼容性和消除歧义规则可以在属性上实现,以表示值之间的兼容性(例如 java 8 与java 11 兼容,但如果请求的版本是11 或者更高,则选择java 11),这些规则通常由插件提供,有关信息,请参见变量选择和声明属性部分。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱宣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值