前言
本章你将学习到
- Gradle的介绍
- Gradle的安装
- Gradle的hello world
1 Gradle的介绍
- Gradle是专注于灵活性和性能的开源构建自动化工具
- Gradle构建脚本是使用Groovy或Kotlin DSL 编写的
- Gradle的优点
- 高度可定制:Gradle以最基本的方式可定制和可扩展的方式建模
- 快速:Gradle通过重新使用先前执行的输出,仅处理已更改的输入以及并行执行任务来快速完成任务
- 强大:Gradle是Android的官方构建工具,并支持许多流行的语言和技术
2 Maven的安装
安装Maven主要是为了使用本地仓库,也可以不安装!
推荐使用sdkman进行安装, sdkman是开源的版本管理工具,仅支持Unix系统,包括java, gradle, maven, groovy等
sdkman的安装可以参考java多版本管理
2.1 Maven版本的查询
$ sdk list maven
================================================================================
Available Maven Versions
================================================================================
3.6.3
3.6.2
3.6.1
3.6.0
3.5.4
3.5.3
3.5.2
3.5.0
3.3.9
2.2 Maven 3.6.3的安装
$ sdk install maven 3.6.3
Downloading: maven 3.6.3
In progress...
########################################################################################### 100.0%
Installing: maven 3.6.3
Done installing!
Setting maven 3.6.3 as default.
2.3 Maven的验证
$ mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/zhouweixin/.sdkman/candidates/maven/current
Java version: 1.8.0_265, vendor: AdoptOpenJDK, runtime: /Users/zhouweixin/.sdkman/candidates/java/8.0.265.hs-adpt/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.6", arch: "x86_64", family: "mac"
3 Gradel的安装
Gradle的安装比较简单,可以到官网上下载解压,然后配置环境
Gradle安装的前提安装好java,配置好环境变量JAVA_HOME
,笔者安装的java版本如下
$ java -version
openjdk version "1.8.0_265"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.265-b01, mixed mode)
Gradle的下载地址:https://gradle.org/releases/
![image-20200916134217175](/Users/zhouweixin/Library/Application Support/typora-user-images/image-20200916134217175.png)
Gradle环境变量的配置
export GRADLE_HOME=解压路径
export PATH=PATH:$GRADLE_HOME/bin
下面演示用sdkman安装gradle,主要是可以简单切换java,gradle的版本
3.1 Gradle版本的查询
$ sdk list gradle
================================================================================
Available Gradle Versions
================================================================================
6.7-rc-1 5.3.1 4.1 2.4
6.6.1 5.3 4.0.2 2.3
6.6 5.2.1 4.0.1 2.2.1
6.5.1 5.2 4.0 2.2
6.5 5.1.1 3.5.1 2.1
6.4.1 5.1 3.5 2.0
6.4 5.0 3.4.1 1.12
6.3 4.10.3 3.4 1.11
6.2.2 4.10.2 3.3 1.10
6.2.1 4.10.1 3.2.1 1.9
6.2 4.10 3.2 1.8
6.1.1 4.9 3.1 1.7
6.1 4.8.1 3.0 1.6
6.0.1 4.8 2.14.1 1.5
6.0 4.7 2.14 1.4
5.6.4 4.6 2.13 1.3
5.6.3 4.5.1 2.12 1.2
5.6.2 4.5 2.11 1.1
5.6.1 4.4.1 2.10 1.0
5.6 4.4 2.9 0.9.2
5.5.1 4.3.1 2.8 0.9.1
5.5 4.3 2.7 0.9
5.4.1 4.2.1 2.6 0.8
5.4 4.2 2.5 0.7
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
3.2 Gralde 6.6.1的安装
$ sdk install gradle 6.6.1
Downloading: gradle 6.6.1
In progress...
########################################################################################### 100.0%
Installing: gradle 6.6.1
Done installing!
Setting gradle 6.6.1 as default.
3.3 Gradle的验证
$ gradle -v
Welcome to Gradle 6.6.1!
Here are the highlights of this release:
- Experimental build configuration caching
- Built-in conventions for handling credentials
- Java compilation supports --release flag
For more details see https://docs.gradle.org/6.6.1/release-notes.html
------------------------------------------------------------
Gradle 6.6.1
------------------------------------------------------------
Build time: 2020-08-25 16:29:12 UTC
Revision: f2d1fb54a951d8b11d25748e4711bec8d128d7e3
Kotlin: 1.3.72
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM: 1.8.0_265 (AdoptOpenJDK 25.265-b01)
OS: Mac OS X 10.15.6 x86_64
Gradle的Hello World
Gradle是由Project和Task组成的,一个Project可以包含多个Task。下面从task开始编写hello world程序。
Task的定义
首先创建脚本文件build.gradle
,当执行gradle命令时, 会自动在当前目录下寻找该名称的脚本文件
build.gradle
task hello {
hello {
println 'Hello world!'
}
}
Task的执行
命令行中输入gradle hello
$ gradle hello
> Configure project :
Hello world!
BUILD SUCCESSFUL in 460ms
至此通过5行代码完成了Gradle Hello World的开发。(以下是日志相关的内容,可以暂时先不看)
但是,你会发现除了打印了Hello World还打印了Gradle的一些执行过程相关的信息。这些便是Gradle的日志信息,为了打印纯粹一些Hello World可以屏蔽Gradle日志的打印。
在命令gradle hello
中添加参数-q
或-quiet
$ gradle -q hello
Hello world!
-q或--quiet有什么含义呢?
要想弄清楚这个参数传达的含义, 首先需要了解一下日志等级, 以下是gradle定义的6个日志等级的排序, 由高到低
日志等级 | 功能 | 备注 |
---|---|---|
ERROR | 错误消息 | |
QUIET | 重要的信息消息 | |
WARNING | 警告消息 | |
LIFECYCLE | 进度信息消息 | 默认值 |
INFO | 信息性消息 | |
DEBUG | 调试消息 |
做过web相关项目的应该都了解, 通常定义的日志等级有4层, 分别有Error, Warning, Info, Debug。在此基础上Gradle额外定义了2个特定的日志等级, 分别是Quiet和Lifecycle。
Gradle提供了参数设置打印的日志类型, 具体而言-q
或--quiet
就是配置日志等级为quiet以上, 即仅打印quiet和error类型的日志
其它日志配置的参数
参数 | 输出日志等级 |
---|---|
没有日志选项 | LIFECYCLE 及更高 |
--quiet |
QUIET 及更高 |
--info |
INFO 及更高 |
--debug |
DEBUG 及更高 |
栈跟踪的参数
选项 | 意义 |
---|---|
没有栈跟踪选项 | 只有在内部异常的情况下才打印栈跟踪 |
--stacktrace |
输出截断的栈跟踪。我们推荐使用这一个选项而不是打印全栈的跟踪信息 |
--full-stacktrace |
打印全栈的跟踪信息。 |