安装以前首先要确保已经安装配置好了java环境,由于我安装的Gradle是4.7的,书上讲的是2.14.1的,因此我没有按照书上的,我参考了Gradle官网的安装步骤,4.7版本要求java版本最低是1.7的,由于个人java是1.8的,因此是能够了,咱们检查下java版本便可,若是低于1.7的话,就安装1.7以上便可。英文还能够的同窗能够直接对照官网的步骤来安装,神奇的传送门html
@MacPro:~% java -version
java version "1.8.0_92"
复制代码
接着开始安装gradle,本来我想按照官网介绍的使用包管理器的方式安装的,无奈输入命令以后半天没有反应,多是命令行方式下载太慢了,我懒得等,就取消了,就下载了源码包进行安装配置,若是有同窗想用包管理器的方式安装的话,输入下面命令便可:java
$ brew install gradle
复制代码
等待完成安装便可。我仍是来介绍下使用源码包的方式安装步骤吧:vim
首先要下载安装包api
能够选择下载二进制包和完整包,完整包包括二进制文件和文档还有源码,我下载的是完整包,完整包,你也能够选择下载二进制包,都同样的哈,二进制包缓存
解压下载的包 按照下面的步骤来便可,注意gradle的包的名字要是你下载的哦,bash
$ mkdir /opt/gradle
$ unzip -d /opt/gradle gradle-4.7-bin.zip
$ ls /opt/gradle/gradle-4.7
LICENSE NOTICE bin getting-started.html init.d lib media
复制代码
$ export PATH=$PATH:/opt/gradle/gradle-4.7/bin
复制代码
而后执行source ~/.bash_profile便可生效闭包
PS:若是你使用了例如zsh的话,好比我,还须要编辑下.zshrc文件,加入一行代码app
source ~/.bash_profile
复制代码
而后执行下面代码就OK了工具
source ~/.zshrc
复制代码
$ gradle -v
------------------------------------------------------------
Gradle 4.7
------------------------------------------------------------
Build time: 2018-04-18 09:09:12 UTC
Revision: b9a962bf70638332300e7f810689cb2febbd4a6c
Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM: 1.8.0_92 (Oracle Corporation 25.92-b14)
OS: Mac OS X 10.13.5 x86_64
复制代码
出现相似上面的信息便可学习
我没有使用Linux和Windows,若是有同窗使用这两种环境,请参考Gradle官网
首先,咱们新建一个目录,而后建立一个build.gradle文件,对,就像咱们Android中的build.gradle文件同样,仅仅名字同样哈,而后打开文件输入一下内容
task{
doLast{
println 'Hello world'
}
}
复制代码
保存文件,打开命令行进入到文件所在目录下,执行命令:
$gradle -q hello
Hello world
复制代码
而后咱们就看到了一顿编译,而后获得了咱们想要的结果。下面咱们来分析下结果产生的步骤和缘由
Wrapper,其实就是对Gradle的一层包装,便于在开发过程当中统一Gradle构建的版本,使得你们都使用统一的Gradle版本,避免由于Gradle版本不统一带来没必要要的问题
Gradle提供了内置的Wrapper task帮助咱们自动生成Wrapper所需的目录文件,在一个项目的根目录中输入gradle wrapper便可生成:
$gradle wrapper
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
复制代码
咱们查看一下目录列表
|____gradle
| |____wrapper
| | |____gradle-wrapper.jar
| | |____gradle-wrapper.properties
|____gradlew
|____build.gradle
|____gradlew.bat
复制代码
gradlew和gradlew.bat分别是Linux和Windows下的可执行脚本,用法和gradle同样,gradle怎么用它们就怎么用,gradle-wrapper.jar是具体业务逻辑实现的jar包,gradlew最终仍是使用java执行的这个jar包来执行相关gradle操做,gradle-wrapper.properties是gradle的配置文件,用于配置使用哪一个版本的Gradle等。
咱们在执行gradle wrapper生成相关文件的时候,还能够指定一些参数,来控制Wrapper的生成
该文件是gradle wrapper的配置文件,咱们上面执行该任务的任何配置都会被写进该文件中,咱们比较关心的distributionUrl字段,这个决定你的gradle wrapper依赖哪一个Gradle版本,通常是这样的distributionUrl=https://services.gradle.org/distributions/gradle-4.7-bin.zip,咱们若是要看Gradle的源码的话,就把bin改为all就能够了,这个路径是下载Gradle的路径,若是裕兴./gradlew的时候一直卡着不动,多是由于官方的Gradle地址被封了,建议换成映像地址
gradle-wrapper.properties文件是由Wrapper Task生成的,其实咱们也能够自定义配置该Wrapper task来达到咱们配置gradle-wrapper.properties的目的,在build.gradle构建文件中加入以下脚本:
task wrapper(type:Wrapper){
gradleVersion='2.4'
}
复制代码
这样咱们再执行gradle wrapper的时候就会默认生成2.4版本的wrapper了。 固然,你也能够把gradle-wrapper.properties文件中的值配置在这里。
Gradle日志便于咱们遇到问题的时候分析问题,其实Gradle的日志和Android同样也是分级别的
$gradle -q tasks //是输出QUIET级别及其之上的日志信息
$gradle -i tasks //输出INFO级别及其之上的日志 信息
复制代码
若是不设置选项,就是默认输出LIFECYCLE级别及其之上的日志信息
在使用Gradle构建的时候,不免会有问题致使失败,这时候咱们就须要根据日志来分析问题,Gradle还提供了堆栈信息的打印,默认状况下是关闭的,咱们须要经过命令行的方式打开
有时候咱们须要本身输出一些日志信息,来验证咱们的逻辑是否正确,一般状况下咱们可使用print系列方法
println '输出日志信息' //被Gradle定向为QUIET级别日志
复制代码
除了print系列方法外,咱们还可使用logger更灵活的出书不一样级别的日志,
logger.quiet('quiet日志信息')
logger.error('error日志信息')
logger.warn('warn日志信息')
logger.info('info日志信息')
...
复制代码
这里其实就是调用的Project的getLogger()来获取的Logger对象的实例
命令行下的工具都有命令,基本上全部的命令行工具都有帮助,基本都很简单,Gradle Wrapper使用帮助的命令有如下几个
./gradlew -?
./gradlew -h
./gradlew -help
复制代码
有时候咱们不知道如何构建一个功能,不知道执行哪一个Task,这时候就须要查看哪些Task可执行,都具有什么功能,经过运行./gradlew tasks --all命令,输出以下
> Task :tasks
------------------------------------------------------------
All tasks runnable from root project
------------------------------------------------------------
Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.
Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-test'.
components - Displays the components produced by root project 'gradle-test'. [incubating]
dependencies - Displays all dependencies declared in root project 'gradle-test'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-test'.
dependentComponents - Displays the dependent components of components in root project 'gradle-test'. [incubating]
help - Displays a help message.
model - Displays the configuration model of root project 'gradle-test'. [incubating]
projects - Displays the sub-projects of root project 'gradle-test'.
properties - Displays the properties of root project 'gradle-test'.
tasks - Displays the tasks runnable from root project 'gradle-test'.
Other tasks
-----------
hello
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
复制代码
能够看到,Gradle会以分组的方式列出Task列表,好比构建类的有init,wrapper,帮助类的有help、tasks等,还有咱们自定义的hello,其实,咱们的task和Gradle中的task都是同样的,都是能够执行的,不要以为很难理解。
若是咱们想看一个task的帮助信息怎么办,简单,使用help task便可,例如:
./gradlew help --task tasks
复制代码
就能够显示tasks任务的帮助信息
> Task :help
Detailed task information for tasks
Path
:tasks
Type
TaskReportTask (org.gradle.api.tasks.diagnostics.TaskReportTask)
Options
--all Show additional tasks and detail.
Description
Displays the tasks runnable from root project 'gradle-test'.
Group
help
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
复制代码
从帮助信息里咱们能够看到这个Task有什么用,是什么类型,属于哪一个分组,有哪些可使用的参数,好比这里就有一个--all参数,能够查看不少额外的详细信息
有时候咱们会依赖一些第三方库,而像Maven这类工具都是有缓存的,由于不可能每次编译的时候都去下载第三方库,缓存就是这个目的,先使用缓存,没有再下载,默认状况下,Maven会控制缓存的更新,可是有时候会使用snapshot版本,这个时候就须要强制刷新,只要在命令行运行的时候加上--refresh-dependencies参数就能够了
./gradlew --refresh-dependecies assemble
复制代码
若是咱们须要同时运行多个任务,好比在执行jar以前先进行clean,那么咱们就须要先执行clean对class文件清理,再执行jar生成一个jar包,若是还有更多的命令,只须要按顺序以空格分开便可
./gradlew clean jar
复制代码
有时候咱们的任务名字很长,若是在执行的时候所有拼写会浪费时间,为此Gradle提供了基于驼峰命名法的缩写调用,好比connectCheck,咱们执行的时候可使用./gradlew cc这样的方式来执行
好累,先把书里的代码逻辑执行看懂再来写进博客,挺麻烦的,有时候真的想放弃,可是,又想到不少像我这样想学习Gradle又没有系统资料的同窗,再加上本身若是只看书操做的话,又会很快忘记,就仍是坚持下来, 第一篇就先结束了,等待第二篇吧,我不是扔物线大神,没有那么忙,相信我,第二篇很快就出来啦。(也不会太快,hiahiahia!!!)