软件项目很少单独工作。项目通常依赖于库中的可重用功能。一些项目将不相关的功能组织到模块化系统的单独部分中。
依赖管理是一种用于声明、解析和使用项目所需功能的自动化技术。
有关依赖关系管理术语的概述,请参阅依赖关系管理术语。 |
Gradle 中的依赖管理
图 1. 依赖关系管理概览
Gradle 内置了对依赖管理的支持。
让我们借助一个理论但常见的项目来探讨主要概念:
-
该项目构建 Java 源代码。
-
本项目使用JUnit进行测试。
Gradle 构建文件可能如下所示:
Example 1. Gradle build file with dependencies
build.gradle.kts
plugins {
`java-library`
}
repositories { (1)
google() (2)
mavenCentral()
}
dependencies { (3)
implementation("com.google.guava:guava:32.1.2-jre") (4)
testImplementation("junit:junit:4.13.2")
}
build.gradle
plugins {
id 'java-library'
}
repositories { (1)
google() (2)
mavenCentral()
}
dependencies { (3)
implementation 'com.google.guava:guava:32.1.2-jre' (4)
testImplementation 'junit:junit:4.13.2'
}
1 | 这里我们为项目定义存储库。 |
2 | 在这里,我们为依赖位置声明远程和本地存储库。
您可以声明存储库来告诉 Gradle 在哪里获取本地或远程依赖项。 |
3 | 这里我们定义项目使用的依赖项。 |
4 | 这里我们声明了一个范围内的具体依赖名称和版本。 |
存储库提供多种格式的依赖项。有关 Gradle 支持的格式的信息,请参阅依赖项类型。
元数据描述依赖关系。元数据的一些示例包括:
-
用于在存储库中查找依赖项的坐标
-
有关创建依赖项的项目的信息
-
依赖项的作者
-
依赖项正常工作所需的其他依赖项,称为传递依赖项
您可以根据项目的要求自定义 Gradle 对传递依赖项的处理。
具有数百个已声明依赖项的项目可能很难调试。 Gradle 提供了可视化和分析项目依赖关系图(即依赖关系树)的工具。您可以使用Build Scan™或内置任务。
图 2. 构建扫描依赖性报告