Gradle构建工具入门

Gradle 是一个基于 Apache AntApache Maven 概念的项目自动化构建工具,支持依赖管理和多项目,类似 Maven,但比之简单轻便。它使用一种基于 Groovy 的特定领域语言来声明项目设置,而不是传统的 XML。

目前在 Android 开发中已经广泛使用,并且越来越多的 Java Web 项目也开始使用 Gradle 作为项目构建工具。

安装 Gradle

官网下载地址: https://gradle.org/install/ ,安装前先配置本地 JDK 环境。

Gradle构建工具入门

方式一:使用 SDK 包管理器进行安装

方式二:macOS 可使用 Homebrew 工具进行安装。

方式三:如果感觉上面的方式太简单,可以下载 Gradle 安装,并手动配置环境变量。手动安装请查看文档:https://gradle.org/install/#manually

安装完成后,检查是否配置成功。

Gradle构建工具入门

创建 Gradle 项目

使用 IDEA 创建 Gradle 项目,这里我们创建 Java 项目。

Gradle构建工具入门
Gradle构建工具入门

勾选 Use auto-import 自动导包,并使用我们刚安装好的 Gradle ,我是使用 Homebrew 安装的,所以安装路径在 /usr/local/Cellar 目录下。

Groovy 入门

Gradle 目前支持 JavaGroovyScala ,最终编译后都是运行在 JVM 虚拟机上的。

首先打开 IDEA 的 Groovy Console 工具。

Gradle构建工具入门

编写一个简单的 JavaBean 。

测试编写的 JavaBean。

运行完全没问题,说明 Groovy 兼容 Java 代码的。

Gradle构建工具入门

改造我们刚写的 JavaBean,去掉修饰符、句尾分号、getter/setter 方法,运行和刚才一样的结果,说明 Groovy 可以省略句尾分号,自动生成 getter/setter 方法,修饰符默认是 public

Gradle构建工具入门

Groovy 高效特性

类型推导:类似 JavaScript 中使用 var 关键字定义变量,不用指定数据类型。

断言:使用 assert 断定条件,不满足则报错。

小括号:调用方法可以省略小括号。

字符串:Groovy 中字符串支持三种编写方式。

集合:Groovy List 集合默认是 ArrayList , Map 默认是 LinkedHashMap 。给集合添加元素和取出元素,也有简写方式。

闭包:有点类似 Java 中的匿名内部类的语法糖 Lambda 表达式、 Swift 中的闭包。

不过闭包在 Gradle 构建工具使用中,我们一般只使用一种方式。

Gradle构建工具入门

解析 build.gradle

我们在使用 Gradle 创建项目后,项目目录下会有一个 build.gradle 构建脚本配置文件,我们编写配置就是在这个文件中。

我目前的 Gradle 版本是 5.3.1 ,不同版本默认生成的 build.gradle 文件中的内容也略有不同,不过只要了解了 Groovy 基础语法,都是能看懂的。

在解析这个构建配置文件之前,要先了解一个概念:构建脚本中默认有一个 Project 实例

基于这个概念,我们再去看这个构建脚本中的内容就比较容易理解了。

语法

调用 Project 实例中的 plugins 方法,传入一个闭包参数。给闭包中的 id 属性赋值 java 字符串。

作用:

使用 Java 插件。

语法

给 Project 实例中的 groupversionsourceCompatibility 3个属性赋值,可以理解成调用对应属性的 setter 方法。

作用

group 配置了项目的组织标识为 com.zaiae.gradle ,相当于 maven 中的 groupId 。

version 配置了项目的版本号,相当于 maven 中的 version 。

sourceCompatibility 配置了编译项目使用的 JDK 版本。

语法

调用 Project 实例中的 repositories 方法,传入一个闭包参数。

作用

repositories 配置包托管仓库,这里只配置了 maven 中央仓库,还可以配置私服等。

语法

调用 Project 实例中的 dependencies 方法,传入一个闭包参数。给闭包中 testCompile 属性赋值一个 map 集合。

作用

配置项目依赖,相当于 maven 中的 dependencies 。

group 相当于 maven 中的 groupId 。

name 相当于 maven 中的 artifactId 。

version 相当于 maven 中的 version 。

六阿哥

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: