软件项目通常依赖于其他库才能正常工作。这些库可以来源于同一构建中的其他项目,也可以来源于外部仓库。
Gradle 的依赖管理基础设施提供 API,用于声明、解析和暴露项目所需和所提供的二进制文件。
理解 Gradle 中的依赖管理对于将项目组织成组件非常重要。当你想重用现有库或需要在管理版本的同时升级这些库时,它也很重要。
让我们看一个 Java 项目,其代码依赖于 Guava,这是一套 Google 的核心 Java 库。该项目的构建文件包含以下内容:
build.gradle.kts
dependencies {
implementation("com.google.guava:guava:32.1.2-jre") (2)
api("org.apache.juneau:juneau-marshall:8.2.0") (3)
}
build.gradle
dependencies {
implementation("com.google.guava:guava:32.1.2-jre") (2)
api("org.apache.juneau:juneau-marshall:8.2.0") (3)
}
在 dependencies
代码块中,声明依赖时有三点需要注意:
-
配置:
implementation
,也称为应用依赖的作用域 -
模块 ID:
com.google.guava:guava
,由group
和 artifactname
组成,它们是唯一标识的 -
版本:
32.1.2-jre
,这并非总是必需的
依赖可以是本地的或外部的。要让 Gradle 知道在哪里查找外部依赖,请在构建文件中使用 repositories{}
代码块。
让我们扩展一下我们的示例
build.gradle.kts
repositories {
google()
mavenCentral()
}
dependencies {
implementation("com.google.guava:guava:32.1.2-jre") (2)
api("org.apache.juneau:juneau-marshall:8.2.0") (3)
}
build.gradle
repositories {
google()
mavenCentral()
}
dependencies {
implementation("com.google.guava:guava:32.1.2-jre") (2)
api("org.apache.juneau:juneau-marshall:8.2.0") (3)
}
在此示例中,Gradle 从 Maven Central 和 Google 仓库获取 guava
和 juneau-marshall
依赖。
学习基础知识
如果你想理解依赖管理的基础知识并且是 Gradle 的新手,请从此处开始。
4. 集中管理依赖
为了将依赖项及其版本声明在一个单一的、易于管理的位置(即集中管理),你可以使用平台和版本目录。
平台是一组旨在一起使用的模块。版本目录是一个集中式的依赖坐标列表,可以在多个项目中引用。
进阶概念
为了影响 Gradle 如何解析依赖项,理解其工作原理非常重要。
4. Artifact 解析
最后,Artifact 解析是 Gradle 确定下载哪些文件或所选变体发布的Artifact并在构建期间使用的方式。