本文介绍 Gradle 的一些核心的构建相关概念。
Gradle 根据构建脚本中定义的信息来进行自动化构建、测试和部署软件,见下图:
核心概念
项目
项目(Projects)是一个可构建的软件,如:应用、程序或库。
- 单体项目(Single Prject):包含一个被称为根项目(root project)的构建。
- 父子项目(Multi-Project):包含一个根项目(root project)和多个子项目(subprojects)的构建。
脚本
- Gradle 采用构建脚本定义构建项目所需的步骤。
- 每个项目都可以包含一个或多个构建脚本。
依赖
- 依赖管理是一种自动化技术,用于声明和解析项目所需的外部资源。
- 每个项目通常都包含许多将在构建过程中解决的外部依赖项。
任务
- 任务是一个基本的工作单元,如:编译代码或运行测试。
- 每个项目都包含一个或多个在构建脚本或插件中定义的任务。
插件
Gradle 采用插件系统来拓展它的功能,并且插件可以选地将任务贡献给项目使用。
工程结构
大部分开发人员将通过现有项目首次与 Gradle 进行交互。
如果项目的根目录中存在gradlew和gradlew.bat文件,则表明使用了 Gradle。
一个 Gradle 项目的结构如下:
1 | project |
gradle目录用于存储 wrappers 相关的文件,配置等。libs.versions.toml是依赖管理的版本目录定义文件。- wrappers 脚本(
.bat是 Windows 操作系统的批处理脚本,另一个无.bat后缀的用于 Unix-Like 操作系统)。 settings.gradle(.kts)用于定义根项目的名称和子项目。build.gradle(.kts)是subproject-a和subproject-b两个子项目的构建脚本。src存放项目的源码或额外的其他文件。
调用方式
IDE
Gradle 被内嵌在大量 IDE 中,诸如: Android Studio, IntelliJ IDEA, Visual Studio Code, Eclipse, and NetBeans.
在这些 IDE 中运行、清理、构建项目时能自动的调用 Gralde。
命令行
Gradle 在安装后可以用过命令行方式来调用,如下:
1 | gradle build |
PS:大多数项目没有使用操作系统上已安装的 Gradle 版本。
包装器
包装器(Wrapper)是一个脚本,用于调用声明的版本的Gradle,是执行 Gradle 构建的推荐方式;其主要文件是项目根部目录的gradlew或gradlew.bat文件。
1 | gradlew build // Linux or OSX |