本文介绍 Gradle 的一些核心的构建相关概念。

Gradle 根据构建脚本中定义的信息来进行自动化构建、测试和部署软件,见下图:

20240402164523.png

核心概念

项目

项目(Projects)是一个可构建的软件,如:应用、程序或库。

  • 单体项目(Single Prject):包含一个被称为根项目(root project)的构建。
  • 父子项目(Multi-Project):包含一个根项目(root project)和多个子项目(subprojects)的构建。

脚本

  • Gradle 采用构建脚本定义构建项目所需的步骤。
  • 每个项目都可以包含一个或多个构建脚本。

依赖

  • 依赖管理是一种自动化技术,用于声明和解析项目所需的外部资源。
  • 每个项目通常都包含许多将在构建过程中解决的外部依赖项。

任务

  • 任务是一个基本的工作单元,如:编译代码或运行测试。
  • 每个项目都包含一个或多个在构建脚本或插件中定义的任务。

插件

Gradle 采用插件系统来拓展它的功能,并且插件可以选地将任务贡献给项目使用。

工程结构

大部分开发人员将通过现有项目首次与 Gradle 进行交互。

如果项目的根目录中存在gradlewgradlew.bat文件,则表明使用了 Gradle。

一个 Gradle 项目的结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
project
├── gradle // 1
│ ├── libs.versions.toml // 2
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew // 3
├── gradlew.bat // 3
├── settings.gradle(.kts) // 4
├── subproject-a
│ ├── build.gradle(.kts) // 5
│ └── src // 6
└── subproject-b
├── build.gradle(.kts) // 5
└── src // 6
  1. gradle目录用于存储 wrappers 相关的文件,配置等。
  2. libs.versions.toml是依赖管理的版本目录定义文件。
  3. wrappers 脚本(.bat是 Windows 操作系统的批处理脚本,另一个无.bat后缀的用于 Unix-Like 操作系统)。
  4. settings.gradle(.kts)用于定义根项目的名称和子项目。
  5. build.gradle(.kts)subproject-asubproject-b两个子项目的构建脚本。
  6. 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 构建的推荐方式;其主要文件是项目根部目录的gradlewgradlew.bat文件。

1
2
gradlew build     // Linux or OSX
gradlew.bat build // Windows