安装
Gradle需要jdk1.5以上的安装环境,Gradle装配了自己的Groovy库,所以无需安装Groovy,配置GRADLE_HOME以及PATH
gradle -v 测试安装成功与否
Project与Task
每一个Gradle的配置都是由一个或多个Project组成,Project的含义取决于你用Gradle来做什么,一个Project可能代表一个Jar
library 或者一个web应用或者一个zip压缩包,一个Project并不一定代表一个即将被构建的项目,
也可能代表一个已经被构建好的项目。
每一个Project由一个或多个Task组成,一个Task代表一些原子性的构建工作,可能是编译代码,打jar包,生成java文档,或者发布一些归档信息到一个repository。
Hello World
用命令行运行Gradle构建的时候,会在当前目录下寻找一个名为build.gradle的文件
在这个build script里定义了一个名为hello的task,当你运行gradle
hello命令时gradle就会执行hello这个task里面的内容,这样定义的方式与Ant中target十分相似,Gradle中的task可以等价于Ant中的target
task hello {
doLast{
println "Hello World!"
}}
运行gradle -q
hello 得到如下结果(-q选型时关闭gradle日志信息,直接使用gradle
hello也可以得到相同的结果,但会打印出一些Gradle的日志)
一种更简洁的hello task定义方式,输出结果与上述方式结果一致
?
1 2 3 |
|
Task依赖
?
1 2 3 4 5 6 |
|
依赖与被依赖task的定义顺序可以颠倒
?
1 2 3 4 5 6 |
|
动态Task
?
1 2 3 4 5 6 |
|
操作已经存在的Task
一旦一个task被创建了那么他们就可以被API访问,这一点与Ant不同
?
1 2 3 4 5 6 7 |
|
?
1 2 3 4 5 6 7 8 9 10 11 12 |
|
doFirst和doLast可以被定义并执行多次(定义同样的操作类型则按照定义的顺序执行) hello <<
等价于hello.doLast
额外的Task配置
你可以通过ext.设置task的额外属性
?
1 2 3 4 5 6 |
|
定义默认任务
?
1 2 3 4 5 6 7 |
|
相当于执行gradle clean run 命令
在多工程构建中每一个子项目都可以拥有其默认的任务,如果一个子项目没有指定其默认的任务,那么就会执行其父项目的默认任务(如果父项目中定义的话)
gradle有配置阶段以及执行阶段,在配置阶段之后Gradle会知道将要被执行的所有任务,Gradle给你提供一个“钩子”来让你使用这些信息
下面这个例子阐述了release task是不是被执行的task之一,根据结果你可以分配不同的值给不同的变量
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
当release task被执行的时候version = "1.0" 没被执行的时候 version =
"1.0-SNAPSHOT"