依赖项管理包含丰富的术语。您可以在此处找到最常用的术语,包括用户指南的参考,以了解其实际应用。

工件

构建产生的文件或目录,例如 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)。此类规则通常由插件提供。有关更多信息,请参阅变体选择声明属性部分。