Projects 和 tasks
1、 Project和task是Gradle的两个基础概念,每次Gradle构建由一个或多个project构成,每个project由一个或多个task构成。
2、Hello world
通过 gradle 命令运行一个Gradle构建,gradle命令会在当前目录下查找build.gradle 文件执行,build.gradle是一个编译配置脚本,具体定义了一个project和它的tasks
build.gradle
task hello {
doLast {
println 'Hello world!'
}
}
执行命令
> gradle -q hello
Hello world!
3、<<
符号
定义task的时候可以使用<<
`简写
task hello << {
println 'Hello world!'
}
看与上面的区别,其实<<
表示了doLast。
4、Build script使用Groovy语法编写
5、一个task可以关联到另一个task上执行
task hello << {
println 'Hello world!'
}
task intro(dependsOn: hello) << {
println "I'm Gradle"
}
> gradle -q intro
Hello world!
I'm Gradle
6、task可以动态创建
4.times { counter ->
task "task$counter" << {
println "I'm task number $counter"
}
}
> gradle -q task1
I'm task number 1
这里涉及到了构建的生命周期,执行gradle -q task1
的时候,首先会解析build.gradle文件,生成相应的task,这里也就生成了task1-task4,四个task,然后根据命令找到task1执行。
7、doFirst 和 doLast
一个task有一个action列表,doFirst会在列表前添加action,doLast在列表后添加,它们都可以被添加多次,执行顺序由脚本中的定义决定。
task hello << {
println 'Hello Earth'
}
hello.doFirst {
println 'Hello Venus'
}
hello.doLast {
println 'Hello Mars'
}
hello << {
println 'Hello Jupiter'
}
> gradle -q hello
Hello Venus
Hello Earth
Hello Mars
Hello Jupiter
8、Default tasks
如果命令行没有指定具体的任务,gradle会寻找默认任务,默认任务通过defaultTasks
指定
defaultTasks 'clean', 'run'
task clean << {
println 'Default Cleaning!'
}
task run << {
println 'Default Running!'
}
task other << {
println "I'm not a default task!"
}
> gradle -q
Default Cleaning!
Default Running!