从入门到精通:Gradle 构建工具全解析

目录

一、Gradle 是什么?为什么要学?

二、Gradle 与其他构建工具的对比

三、环境搭建与基本使用

3.1 安装 Gradle

3.2 Gradle Wrapper 使用

3.3 基本命令操作

四、Gradle 构建文件详解

4.1 build.gradle 文件剖析

4.1.1 插件应用

4.1.2 项目配置

4.1.3 依赖管理

4.2 settings.gradle 文件作用

五、Gradle 构建生命周期

5.1 初始化阶段

5.2 配置阶段

5.3 执行阶段

六、Gradle 依赖管理

6.1 依赖声明方式

6.1.1 直接依赖声明

6.1.2 项目依赖声明

6.1.3 本地 Jar 包依赖声明

6.2 依赖配置

6.2.1 implementation

6.2.2 api(或 compile,compile 已废弃)

6.2.3 compileOnly

6.2.4 runtimeOnly

6.2.5 testImplementation 和 testRuntimeOnly

6.3 仓库配置

6.3.1 Maven Central 仓库配置

6.3.2 本地仓库配置

6.3.3 远程自定义仓库配置

七、Gradle 插件开发与使用

7.1 自定义插件开发步骤

7.1.1 创建项目

7.1.2 实现插件接口

7.1.3 编写插件逻辑

7.1.4 配置插件属性文件

7.1.5 发布插件

7.2 常见插件介绍与使用

7.2.1 Android 插件

7.2.2 Kotlin 插件

7.2.3 Java 插件

八、实战案例:使用 Gradle 构建项目

8.1 创建一个简单项目

8.2 构建和打包项目

8.3 多模块项目构建

九、总结与展望

9.1 学习回顾

9.2 未来学习方向


一、Gradle 是什么?为什么要学?

在软件开发的世界里,构建工具就像是幕后英雄,默默推动着项目从代码到可执行程序的转变。Gradle,便是其中一位强大且备受瞩目的角色。它是一个基于 JVM 的开源自动化构建工具 ,结合了 Apache Ant 和 Apache Maven 的优点,旨在帮助开发人员更轻松、自动地完成项目的构建、测试、发布等繁琐流程。

Gradle 之所以脱颖而出,是因为它有着诸多显著优势。在性能方面,它支持增量构建,每次构建时只处理有更改的部分,并且通过任务输入输出缓存机制,减少不必要的工作量,再加上支持并行执行,充分利用处理器资源,大大提高了构建速度。在灵活性与扩展性上,Gradle 使用 Groovy 或 Kotlin 编写构建脚本,提供丰富的插件,开发者能根据项目需求灵活定制,官方也提供了强大的功能支持,通过各类插件可实现对各种功能的灵活管理。在依赖管理上,Gradle 对复杂依赖关系的处理十分友好,能处理传递性依赖、解析依赖版本冲突等,还可配置多个仓库,如 Maven Central、jCenter、自定义仓库等,满足项目多样化的依赖需求。同时,Gradle 还支持多项目构建与管理,能协调多个项目间的依赖关系和构建过程,为大型项目的维护提供了便捷方式。不仅如此,Gradle 与各种 IDE(如 IntelliJ IDEA、Eclipse、Android Studio )无缝集成,也能与 CI/CD 工具(如 Jenkins、GitLab CI、Travis CI 等)集成,助力实现从开发到上线的全套自动化部署流程。此外,Gradle 拥有活跃的社区和丰富的文档资源,开发者可便捷获取帮助,社区提供的众多插件也能让 Gradle 更好地适应不断变化的需求。

对于开发者而言,掌握 Gradle 意味着拥有更高的工作效率和更强的项目掌控能力。在实际开发中,无论是 Java 应用程序构建,还是 Android 应用开发,亦或是大型多项目的管理,Gradle 都能发挥重要作用。并且,随着技术的发展,越来越多的企业和项目开始采用 Gradle,掌握这门技能,无疑能为你的技术栈增添亮眼的一笔,在职业发展中抢占先机。所以,不管你是初入编程世界的新手,还是经验丰富的开发老手,学习 Gradle 都是一项极具价值的投资 。

二、Gradle 与其他构建工具的对比

在构建工具的大家庭里,Gradle 并非孤军奋战,Maven 和 Ant 也是其中的重要成员 ,它们各自有着独特的 “性格” 和 “本领”。

Maven 作为 Java 项目构建的老牌工具,有着 “约定优于配置” 的理念,就像一位严谨的管家,严格遵循着标准化的流程。它使用基于 XML 的 pom.xml 文件来管理项目,从依赖项的引入到构建插件的配置,都有着清晰的结构。例如,当你添加一个 Spring Boot 的 Web 依赖时,在 pom.xml 文件中这样配置:

 

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<version>2.6.2</version>

</dependency>

</dependencies>

这种 XML 配置方式虽然结构化强,易于管理和维护,但也存在明显的缺点,那就是过于冗长繁琐。当项目的依赖和配置增多时,pom.xml 文件会变得臃肿不堪,让人望而生畏。而且,Maven 的构建过程相对僵化,按顺序处理任务,缺乏并行执行的能力,这使得构建大型项目时,速度成为了它的短板。

Ant 则是另一种风格,它诞生于 2000 年,是一个基于 Java 的构建工具,以灵活性高著称。Ant 没有强制的项目目录结构,也没有像 Maven 那样 “约定优于配置” 的理念,开发者可以根据自己的需求自由定制构建过程。它通过编写 XML 文件来定义构建任务,例如:

 

<project name="MyProject" default="build">

<target name="build">

<echo message="Building project..."/>

<!-- 其他构建任务,如编译、打包等 -->

</target>

</project>

Ant 就像一个万能的工匠,你可以告诉它每一个细节,但这也意味着开发者需要花费更多的精力去编写和维护构建脚本。对于复杂的项目,编写大量的 XML 指令对开发人员来说是一个不小的挑战。

Gradle 则巧妙地融合了 Maven 和 Ant 的优点,成为了构建工具中的 “多面手”。它采用基于 Groovy 或 Kotlin 的 DSL 来配置项目,兼具简洁性与灵活性。比如在 Gradle 中添加 Spring Boot 的 Web 依赖,只需这样配置:

 

dependencies {

implementation 'org.springframework.boot:spring-boot-starter-web:2.6.2'

}

相比 Maven 的 XML 配置,Gradle 的 DSL 更加简洁明了,可读性更强。在性能方面,Gradle 更是优势明显,它支持增量构建,只重新编译发生更改的代码部分,避免了重复编译整个项目,大大缩短了构建时间。同时,Gradle 还具备依赖项缓存机制和并行执行功能,在处理大型项目时,这些特性使得构建速度大幅提升。在扩展性上,Gradle 基于插件的扩展机制也使得它能够轻松应对各种复杂的项目需求。

三、环境搭建与基本使用

3.1 安装 Gradle

在正式开启 Gradle 的学习之旅前,我们首先得把它请进我们的开发环境。安装 Gradle 的步骤并不复杂,跟着下面的指引,你很快就能完成。

  1. 下载 Gradle:访问 Gradle 官方网站的下载页面(https://gradle.org/releases/ ) ,这里提供了不同版本的 Gradle 供你选择。通常,建议下载最新稳定版本,以享受最新的功能和性能优化。比如,当前最新版本是 8.2,你可以点击对应的链接下载适合你操作系统的安装包。如果你使用的是 Windows 系统,一般下载.zip格式的文件;若是 Linux 或 macOS 系统,.tar.gz格式更为常见。
  1. 解压安装包:下载完成后,将压缩包解压到你希望安装 Gradle 的目录。例如,在 Windows 系统中,你可以解压到C:\Program Files\gradle;在 macOS 系统中,解压到/Users/你的用户名/Applications/gradle。解压后的目录结构大致如下,其中bin目录存放着可执行文件,lib目录包含了 Gradle 运行所需的库文件:
 

gradle-8.2

├── bin

│ ├── gradle

│ └── gradle.bat

├── lib

│ └── ...

└── ...

  1. 配置环境变量:这一步是让系统能够找到 Gradle 的关键。
    • Windows 系统:右键点击 “此电脑”,选择 “属性”,在弹出的窗口中点击 “高级系统设置”,然后在 “系统属性” 窗口中点击 “环境变量”。在 “系统变量” 区域找到 “Path” 变量,点击 “编辑”,在弹出的 “编辑环境变量” 窗口中点击 “新建”,将 Gradle 的bin目录路径添加进去,比如C:\Program Files\gradle\gradle-8.2\bin。添加完成后,依次点击 “确定” 保存设置。
    • Linux 和 macOS 系统:打开终端,编辑你的 Shell 配置文件。如果你使用的是 bash,编辑~/.bashrc文件;若是 zsh,编辑~/.zshrc文件。在文件末尾添加以下两行代码(假设你的 Gradle 安装目录是/Users/你的用户名/Applications/gradle/gradle-8.2):
 

export GRADLE_HOME=/Users/你的用户名/Applications/gradle/gradle-8.2

export PATH=$GRADLE_HOME/bin:$PATH

添加完成后,保存文件,并执行source ~/.bashrc(bash 用户)或source ~/.zshrc(zsh 用户)使配置生效。

4. 验证安装:打开终端或命令提示符,输入gradle -v,如果安装和配置成功,你将看到 Gradle 的版本信息、构建时间、Kotlin 和 Groovy 版本等详细信息,如下所示:

 

Welcome to Gradle 8.2!

Here are the highlights of this release:

- Kotlin DSL: new reference documentation, assignment syntax by default

- Kotlin DSL is now the default with Gradle init

- Improved suggestions to resolve errors in console output

For more details see https://docs.gradle.org/8.2/release-notes.html

------------------------------------------------------------

Gradle 8.2

------------------------------------------------------------

Build time: 2023-06-30 18:02:30 UTC

Revision: 5f4a070a62a31a17438ac998c2b849f4f6892877

Kotlin: 1.8.20

Groovy: 3.0.17

Ant: Apache Ant(TM) version 1.10.13 compiled on January 4 2023

JVM: 11.0.1 (Oracle Corporation 11.0.1+13-LTS)

OS: Mac OS X 10.16 x86_64

3.2 Gradle Wrapper 使用

虽然我们已经成功安装了 Gradle,但在团队协作或项目迁移时,不同成员的 Gradle 版本可能不一致,这就容易引发构建问题。Gradle Wrapper 的出现,就是为了解决这个难题。

Gradle Wrapper 本质上是对 Gradle 的一层封装,它确保了项目使用一致的 Gradle 版本 。当你使用 Gradle Wrapper 时,它会检查本地是否安装了项目指定版本的 Gradle,如果没有,它会自动从指定的仓库下载并使用,避免了手动安装和版本不一致的麻烦。

在一个新的 Gradle 项目中,如果你还没有 Gradle Wrapper,可以通过以下命令生成:

 

gradle wrapper

执行这个命令后,项目目录下会生成一些与 Gradle Wrapper 相关的文件,主要包括:

  • gradlew:这是 Linux 和 macOS 系统下的可执行脚本,用于执行 Gradle 任务。
  • gradlew.bat:Windows 系统下对应的批处理脚本。
  • gradle/wrapper/gradle-wrapper.jar:包含了 Gradle Wrapper 的核心逻辑,负责下载 Gradle 等操作。
  • gradle/wrapper/gradle-wrapper.properties:这个文件非常重要,它定义了项目使用的 Gradle 版本以及下载地址等信息。例如:
 

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip

其中distributionUrl指定了 Gradle 的下载地址和版本,你可以根据项目需求修改这个版本号,当再次执行gradlew相关命令时,它会自动下载并使用新指定的 Gradle 版本。

使用 Gradle Wrapper 也很简单,在项目根目录下,你可以使用gradlew命令替代gradle命令来执行各种 Gradle 任务。比如查看项目的所有任务:

 

./gradlew tasks

在 Windows 系统中,使用gradlew.bat:

 

gradlew.bat tasks

3.3 基本命令操作

Gradle 提供了丰富的命令来满足项目构建的各种需求,以下是一些常用命令及其用途:

  • gradle -v:查看 Gradle 的版本信息,包括 Gradle 版本、构建时间、依赖的 Kotlin、Groovy、Ant、JVM 以及操作系统等相关信息,帮助你确认当前使用的 Gradle 环境。
  • gradle tasks:列出当前项目中所有可执行的任务,让你快速了解项目的构建任务有哪些,比如常见的clean(清理构建目录)、build(执行完整的构建,包括编译、测试、打包等)、assemble(打包任务,生成可发布的文件,如 JAR 包、WAR 包等)。
  • gradle build:这是最常用的构建命令之一,它会依次执行项目的编译、测试、打包等一系列任务,生成最终的可执行文件或发布包。在 Java 项目中,执行gradle build后会在build目录下生成编译后的字节码文件、测试报告以及打包好的 JAR 包等。
  • gradle clean:用于清理项目的构建目录,删除build目录下的所有文件和目录,为下一次构建做好准备,避免因残留文件导致的构建问题。
  • gradle assemble:专注于打包任务,根据项目的配置,生成对应的可发布文件。例如在 Android 项目中,执行gradle assemble会生成 APK 文件;在 Java Web 项目中,可能会生成 WAR 包。
  • gradle test:执行项目中的单元测试用例,并生成测试报告。通过这个命令,你可以快速验证代码的正确性,及时发现代码中的问题。例如,在一个 Java 项目中,如果有 JUnit 测试用例,执行gradle test会运行这些测试用例,并在build/reports/tests目录下生成详细的测试报告。

四、Gradle 构建文件详解

4.1 build.gradle 文件剖析

在 Gradle 项目中,build.gradle文件可谓是核心中的核心,它就像是项目构建的指挥中心,所有关于项目构建的重要指令都在这里下达。一个典型的build.gradle文件主要包含以下几个关键部分:

4.1.1 插件应用

插件是 Gradle 功能扩展的关键,通过应用插件,我们可以为项目引入各种强大的功能。在build.gradle文件中,使用plugins块来应用插件 。例如,在一个 Java 项目中,我们通常会应用java插件,它提供了编译、测试、打包等一系列 Java 项目常用的构建任务:

 

plugins {

id 'java'

}

如果是一个 Android 项目,就需要应用com.android.application插件(对于应用模块)或com.android.library插件(对于库模块) ,以支持 Android 项目的构建:

 

plugins {

id 'com.android.application'

}

插件不仅能让我们轻松复用已有的构建逻辑,还能根据项目的特殊需求进行定制开发,极大地提高了构建的灵活性和效率。

4.1.2 项目配置

项目配置部分用于定义项目的各种属性和设置,不同类型的项目配置内容会有所不同。以 Java 项目为例,在build.gradle文件中可以配置项目的源文件目录、目标 Java 版本等。比如:

 

sourceSets {

main {

java {

srcDirs 'src/main/java'

}

resources {

srcDirs 'src/main/resources'

}

}

test {

java {

srcDirs 'src/test/java'

}

resources {

srcDirs 'src/test/resources'

}

}

}

这里通过sourceSets块定义了项目的主源代码目录src/main/java和资源目录src/main/resources,以及测试源代码目录src/test/java和测试资源目录src/test/resources。同时,还可以指定项目使用的 Java 版本:

 

apply plugin: 'java'

sourceCompatibility = 11

ta

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大雨淅淅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值