目录
一 简介
依赖管理是基于apache Ivy的,任务和构建是基于ant的,脚本是用groovy的
Gradle wrapper
Gradle wrapper允许你在没有安装Gradle的机器上执行构建,这对于持续发布来说是非常有用的,对于一些开源项目屏蔽构建的最低要求来说也是非常有用的,wrapper对于企业来说也是非常重要的,客户端机可以0管理,而且强制了Gradle的版本
,可以让出错率更低
具体实践在gradle(3)中说明
二 实践
详见:http://wiki.jikexueyuan.com/project/gradle/build-script-basics.html
2.1 helloworld
task hello {
doLast {
println 'Hello world!'
}
}
运行
gradle -q hello
简介模式(不需要<<)
task hello {
println 'Hello world!'
}
2.2 任务依赖
task hello {
doLast{
println 'Hello world!'
}
}
task intro(dependsOn: hello) {
doLast{
println "I'm Gradle"
}
}
为什么还要用doLast?
<<在5.0之后被移出,而不写的话。任务会依次执行。
2.3 延迟依赖
即被依赖项写在后面
task intro(dependsOn: 'hello') {//注意:当引用的任务尚未定义的时候不可使用短标记法来运行任务。
doLast{
println "I'm Gradle"
}
}
task hello {
doLast{
println 'Hello world!'
}
}
2.4 动态任务
4.times { counter ->//这里构建了4个任务,这应该时Groovy的遍历语法
task "task$counter" {//这里是双引号
doLast{
println "I'm task number $counter"
}
}
}
2.5 任务操纵
一旦任务被创建
后,任务之间可以通过 API 进行相互访问
。这也是与 Ant 的不同之处。比如可以增加一些依赖
2.5.1增加依赖
4.times { counter ->
task "task$counter" {
doLast{
println "I'm task number $counter"
}
}
}
task0.dependsOn task2, task3
2.5.2 增加任务行为
task hello {
doLast{
println 'Hello Earth'
}
}
hello.doFirst {
println 'Hello Venus'
}
hello.doFirst {
println 'Hello Venus repeat'
}
hello.doLast {
println 'Hello Mars'
}
hello {
doLast{
println 'Hello Jupiter'
}
}
//doFirst后的先,doLast后的后。即后面的会覆盖前面
Hello Venus repeat
Hello Venus
Hello Earth
Hello Mars
Hello Jupiter
doFirst 和 doLast 可以进行多次调用。他们分别被添加在任务的开头和结尾。当任务开始执行时这些动作会按照既定顺序进行
2.5.3 短标记法
你早就注意到了吧,没错,每个任务都是一个脚本的属性,你可以访问它:
以属性的方式访问任务
task hello {//这里有task
doLast{
println 'Hello Earth'
}
}
hello.doLast {//必须先声明task
println "Greetings from the $hello.name task."
}
2.6 增加自定义属性
你可以为一个任务添加额外的属性。例如,新增一个叫做 myProperty 的属性,用 ext.myProperty 的方式给他一个初始值。这样便增加了一个自定义属性。
task hello {
doLast{
println 'Hello Earth'
}
ext.myProperty = "myValue"
}
task printTaskProperties {
doLast{
println hello.myProperty
}
}
2.7 调用 Ant 任务
略
2.8 定义默认任务
task hello {
doLast{
println 'Hello Earth'
}
ext.myProperty = "myValue"
}
task printTaskProperties {
doLast{
println hello.myProperty
}
}
defaultTasks 'hello', 'printTaskProperties'
三 命令行实践(二)
3.1 多任务执行
gradle命令可以同时执行多个任务,参数为任务列表,参数列表中的任务会按顺序执行,例如gradle compile test,compile任务和test任务都会被执行,包括test依赖的任务,但要注意的一点是,同一个任务只会执行一次,不管是列表中的任务,还是列表任务依赖的任务,同一个任务只会执行一次
。
3.2 排除任务
gradle dist -x test
dist任务依赖于test任务,但是使用**-x之后test任务并没有执行**,test依赖的compileTest任务也没执行,test也依赖于compile任务,但是compile同时也会被dist依赖,并且没有排除,因此compile执行了。
3.3 忽略失败继续执行
-continue
参数
3.4 任务名缩写
支持缩写(最少两个字符)
支持驼峰(cT)
3.5 指定build配置文件/屏蔽其他辅助型输出/多项目的构建
指定build配置文件:-b
指定要执行的build文件(-b=--build-file
)
屏蔽其他辅助型输出:-q标签是用来屏蔽其他辅助型输出的,只输出任务的输出流或者错误流(-q=–quiet)
多项目的构建:-p指令(-p=–project-dir),常用于多个项目的构建,当然文件名要使用默认的buil.gradle了
可组合使用
gradle -q -p subfile -b secondbuild.gradle cT
3.6 强制任务执行
没试过
> gradle --rerun-tasks jar
BUILD SUCCESSFUL in 7s
4 actionable tasks: 4 executed
3.7 查看构建信息
首先需要一个gradle项目
略