Gradle 基础用法

编辑于2018年10月20日

Gradle是一个汲取 AntMaven 概念的开源自动化构建工具。它使用基于 GroovyKotlin 的特定领域语言(DSL)来声明项目设置,抛弃了基于 XML 的各种繁琐配置。

刚工作时参与的 Java 项目都是使用 Maven(也不是特别熟,会用而已) 构建,当时虽然知道 Gradle,不过也没有系统的了解过,只是在一些 Android 相关的项目中见到过。

虽然已有 1 年多没有写过 Java,但最近因为工作需要,开始了解微服务、Spring Cloud、Spring Boot 等,所以打算重新拾起来。在系统学习之前,打算先学习 Gradle,并且以后自己的一些项目就使用 Gradle 作为构建工具。

安装

Gradle 可以在所有主流操作系统上运行,需要 Java(7.0 或更高) 环境。根据官网上的教程下载安装即可,我直接使用 Homebrew 安装。

$ brew install gradle

在终端执行 gradle -v 验证是否安装成功。

创建一个简单地 Gradle 项目

使用 Gradle 的 init 命令可以生成一个项目。

$ cd project
$ gradle init

创建成功后,生成如下内容:

├── build.gradle  // 当前项目的构建脚本配置
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar  // Gradle Wrapper 可执行 JAR
│       └── gradle-wrapper.properties  // Gradle Wrapper 配置文件
├── gradlew  // Gradle Wrapper 运行脚本(基于 Unix 系统)
├── gradlew.bat  // Gradle Wrapper 运行脚本(Windows)
└── settings.gradle  // Gradle 构建脚本的设置脚本文件

Gradle Wrapper 是一个脚本文件,它内部使用 Gradle,必要时会预先下载 Gradle。然后,就可以使用 gradlew 脚本来使用 Gradle。例如:gradlew build(Windows 系统下使用gradlew.bat build)。

gradle init 可以生成多种不同类型的项目,甚至能识别简单地 pom.xml 文件。

创建任务

Gradle 通过基于 Groovy 或者 Kotlin 的 DSL(特定领域语言)来提供 API 使我们能创建和配置任务。一个项目(Project)就是多个任务(Task)的集合,每个任务执行一些基本操作。

Gradle 内置了一个任务库,我们可以在自己的构建脚本中使用。例如 Copy 任务,执行文件复制操作,复制过程中还可以重命名和过滤文件。

src 目录下创建一个 myfile.txt 文件,并写入 Hello, World!,定义一个 Copy(首字母大写) 类型的 copy 任务:

task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
    from "src"
    into "dest"
}

当执行 tasks 命令时,会根据 group 进行分组并显示 description 定义的描述信息。

执行任务:./gradlew copy,这里如果没有 Gradle,会自动下载。安装的目录可以在 gradle-wrapper.properties 文件中配置,默认的 GRADLE_USER_HOME 是当前用户目录(区分 类Unix 和 Windows 系统)下的 .gradle 目录。

执行完后可以发现自动创建了 dest 目录,并复制了 myfile.txt

使用插件

Gradle 包含一系列插件,Gradle 插件门户提供了许多插件。该发行版附带的插件之一是 base 插件。结合名为 Zip 的核心类型,可以使用已配置的名称和路径创建项目的 zip 压缩包。

使用 plugins 语法将 base 插件添加到构建脚本文件中。要在文件顶部添加 plugins {} 块:

plugins {
    id "base"
}

然后创建一个压缩 src 目录的 任务:

task zip(type: Zip, group: "Archive", description: "Archives sources in a zip file") {
    from "src"
    setArchiveName "basic-demo-1.0.zip"
}

根据此配置,base 插件会在 build/distributions 目录下创建一个 basic-demo-1.0.zip 压缩包。

探索和调试构建

查看命令行接口文档了解 Gradle 提供的功能。

查看可用的任务

tasks 命令可以列出可调用的任务,包括 base 插件中的任务和自定义任务。

分析和调试构建

Gradle 还提供了一个基于 Web 的丰富的构建视图,称为 构建扫描

通过使用 --scan 参数或者显示地定义扫描插件,可以免费的在 scans.gradle.com 上创建构建扫描。将构建扫描发布到 scans.gradle.com 上时会将数据发送到 Gradle 服务器。如果要把数据保存在自己的服务器上,查看 Gradle Enterprise

查看构建扫描,能够轻松找到执行的任务,花费的时间,应用的插件等等。

通过 --scan 参数在执行任务的时候创建构建扫描:

$ ./gradlew zip --scan

BUILD SUCCESSFUL in 0s
1 actionable task: 1 up-to-date

Publishing a build scan to scans.gradle.com requires accepting the Gradle Terms of Service defined at https://gradle.com/terms-of-service. Do you accept these terms? [yes, no]
yes
Gradle Terms of Service accepted.

Publishing build scan...
https://gradle.com/s/2bywros2lyjfs

发布到 scans.gradle.com 需要接受相应的服务条款。

查看可用的属性

properties 命令可以列出可用的项目属性。

我们可以更改许多属性。例如,我们可以尝试将下列行添加到构建脚本文件中,并重新执行 gradle properties

description = "A trivial Gradle build"
version = "1.0"

希望对您能有帮助,打赏随意