依赖性管理带有大量术语. 在这里,您可以找到最常用的术语,包括对用户指南的引用,以了解其实际应用.

Artifact

生成的文件或目录,例如JAR,ZIP发行版或本机可执行文件.

工件通常设计为由用户或其他项目使用或使用,或部署到托管系统. 在这种情况下,工件是单个文件. 目录在项目间相关性的情况下很常见,以避免产生可发布工件的成本.

Capability

功能标识由一个或多个组件提供的功能. 通过类似于用于模块版本的坐标的坐标来标识能力. 默认情况下,每个模块版本都提供与其坐标匹配的功能,例如com.google:guava:18.0 . 功能可以用来表示一个组件提供了多个功能变体,或者两个不同的组件实现了相同的功能(因此不能一起使用). 有关更多详细信息,请参见功能部分.

Component

模块的任何单一版本.

对于外部库,术语组件是指该库的一个发行版本.

在构建中,组件由插件(例如Java库插件)定义,并提供一种定义发布出版物的简单方法. 它们包括工件以及适当的元数据 ,这些元数据详细描述了组件的变体 . 例如,默认设置中的java组件由jar任务生成的jar以及Java api运行时变体的依赖项信息组成. 它还可以使用相应的工件定义其他变体,例如Javadoc .

Configuration

A configuration is a named set of dependencies grouped together for a specific goal. Configurations provide access to the underlying, resolved modules and their artifacts. For more information, see the sections on dependency configurations as well as resolvable and consumable configurations.

单词"配置"是一个重载术语,在依赖项管理的上下文之外具有不同的含义.

Dependency

依赖关系是构建,测试或运行模块所需的另一软件的指针. 有关更多信息,请参见关于声明依赖项的部分.

Dependency constraint

依赖关系约束定义了模块要使其成为依赖关系的有效解决结果所需要满足的要求. 例如,依赖性约束可以缩小支持的模块版本的范围. 依赖性约束可用于表达对传递性依赖性的此类要求. 有关更多信息,请参见有关升级降级传递依赖项的部分.

Feature Variant

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

Module

随时间推移而发展的软件,例如Google Guava . 每个模块都有一个名称. 模块的每个发行版均以模块版本为代表. 为了方便使用,可以将模块托管在资源库中 .

Module metadata

模块的发行版提供元数据. 元数据是更详细地描述模块的数据,例如有关工件位置或所需传递依赖项的信息 . Gradle提供了自己的元数据格式,称为Gradle模块元数据.module文件),但还支持Maven( .pom )和Ivy( ivy.xml )元数据. 有关支持的元数据格式的更多信息,请参见了解Gradle模块元数据的部分.

Component metadata rule

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

Module version

模块版本表示已发布模块的一组不同的更改. 例如18.0代表坐标为com.google:guava:18.0的模块版本. 实际上,对模块版本的方案没有限制. 时间戳,数字,特殊后缀-GA等都是允许的标识符. 最广泛使用的版本控制策略是语义版本控制 .

Platform

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

  • 模块集:通常是作为一个整体发布的一组模块. 使用集合中的一个模块通常意味着我们要对集合中的所有模块使用相同的版本. 例如,如果使用groovy 1.2,则还要使用groovy-json 1.2.

  • 运行时环境:一组可以很好地协同工作的库. 例如,Spring Platform,为Spring和与Spring一起工作的组件推荐了版本.

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

另外Gradle定义了虚拟平台 .

Maven的BOM(物料清单)是Gradle支持的一种流行的平台.

Publication

对文件和元数据的描述,这些文件和元数据应作为单个实体发布给存储库,以供使用者使用.

出版物具有名称,由一个或多个工件以及有关这些工件的信息( 元数据 )组成.

Repository

存储库托管一组模块 ,每个模块可以提供一个或多个由模块版本指示的发行版(组件). 该存储库可以基于二进制存储库产品(例如Artifactory或Nexus)或文件系统中的目录结构. 有关更多信息,请参见声明存储库 .

Resolution rule

解决规则会影响如何直接解决依赖项的行为. 解析规则定义为构建逻辑的一部分. 有关更多信息,请参见有关直接自定义依赖项解析的部分.

Transitive dependency

组件的变体可以依赖于其他模块才能正常工作,即所谓的传递依赖. 托管在存储库中的模块的发行版可以提供元数据来声明这些可传递依赖项. 默认情况下,Gradle自动解析传递依赖. 声明依赖约束可以影响可传递依赖的版本选择.

Variant (of a component)

每个组件都包含一个或多个变体. 变体由一组工件组成,并定义了一组依赖项. 它由一组属性功能标识.

Gradle的依赖项解决方案可识别变体,并在选择组件(即模块的一个版本)后为每个组件选择一个或多个变体. 如果变体选择结果不明确,也可能会失败,这意味着Gradle没有足够的信息来选择多个互斥变体之一. 在那种情况下,可以通过变量属性提供更多信息. 每个Java组件通常提供的变体示例是api运行时变体. 其他示例是JDK8和JDK11变体. 有关更多信息,请参见变量选择部分.

Variant Attribute

属性用于识别和选择变体 . 一个变体定义了一个或多个属性,例如org.gradle.usage=java-apiorg.gradle.jvm.version=11 . 解决依赖关系后,将请求一组属性,并且Gradle会为依赖关系图中的每个组件找到最合适的变量. 可以为属性实现兼容性和消歧规则,以表达值之间的兼容性(例如Java 8与Java 11兼容,但是如果请求的版本为11或更高版本,则应该首选Java 11). 此类规则通常由插件提供. 有关更多信息,请参见有关变量选择声明属性的部分 .