println ‘taskX’
}
task taskY << {
println ‘taskY’
}
运行结果如下:
xxx@XXX:~/$ gradle taskX
:taskY
taskY
:taskX
taskX
BUILD SUCCESSFUL
Total time: 1.039 secs
动态任务task:
我们还可以在Gradle中使用Groovy来创建动态task,如下:
4.times { counter ->
task “task$counter” << {
println “I’m task number $counter”
}
}
运行结果如下:
xxx@XXX:~/$ gradle task1
:task1
I’m task number 1
BUILD SUCCESSFUL
Total time: 1.397 secs
使用已存在任务task:
我们除过在上面定义任务task时指明依赖以外还可以通过API为任务加入一个依赖,如下:
4.times { counter ->
task “task$counter” << {
println “I’m task number $counter”
}
}
task0.dependsOn task2, task3
运行结果如下:
xxx@XXX:~/$ gradle task0
:task0
I’m task number 2
I’m task number 3
I’m task number 0
BUILD SUCCESSFUL
Total time: 1.397 secs
或者我们还可以通过API为任务加入一些新行为,如下:
task hello << {
println ‘Hello Earth’
}
hello.doFirst {
println ‘Hello Venus’
}
hello.doLast {
println ‘Hello Mars’
}
hello << {
println ‘Hello Jupiter’
}
运行结果如下:
xxx@XXX:~/$ gradle hello
:hello
Hello Venus
Hello Earth
Hello Mars
Hello Jupiter
BUILD SUCCESSFUL
Total time: 1.397 secs
可以发现,doFirst和doLast可以被执行多次,<<操作符实质就是doLast。
任务task短标记:
我们可以通过美元符将一个task作为另一个task的属性,如下:
task hello << {
println ‘Hello world!’
}
hello.doLast {
println “Greetings from the $hello.name task.”
}
执行结果如下:
xxx@XXX:~/$ gradle hello
:hello
Hello world!
Greetings from the hello task.
BUILD SUCCESSFUL
Total time: 1.397 secs
可以看见,上面脚本中使用的name其实是任务的默认属性, 代表当前任务的名称。
自定义任务task属性:
我们还可以给任务task加入自定义的属性,如下例子:
task myTask {
ext.myProperty = “myValue”
}
task printTaskProperties << {
println myTask.myProperty
}
执行结果如下:
xxx@XXX:~/$ gradle printTaskProperties
:printTaskProperties
myValue
BUILD SUCCESSFUL
Total time: 1.397 secs
定义默认任务task:
Gradle允许在脚本中定义一个或多个默认任务,如下:
defaultTasks ‘clean’, ‘run’
task clean << {
println ‘Default Cleaning!’
}
task run << {
println ‘Default Running!’
}
task other << {
println “I’m not a default task!”
}
执行结果如下:
xxx@XXX:~/$ gradle
:clean,run
Default Cleaning!
Default Running!
BUILD SUCCESSFUL
Total time: 1.397 secs
【工匠若水 http://blog.csdn.net/yanbober 转载请注明出处。点我开始Android技术交流】
4 Gradle依赖管理基础
==================
大多数项目都不是完全独立的,它们需要依赖其他项目进行编译等,Gradle允许你告诉它你项目的依赖关系,以便找到这些依赖关系,并在你的构建中维护这些依赖关系,依赖关系可能需要从远程的Maven等仓库中下载,也可能是在本地文件系统中,或者是通过多项目构建另一个构建,我们称这个过程为依赖解析。
Gradle依赖声明:
关于依赖声明不解释,直接给个例子,如下:
apply plugin: ‘java’
repositories {
mavenCentral()
}
dependencies {
compile group: ‘org.hibernate’, name: ‘hibernate-core’, version: ‘3.6.7.Final’
testCompile group: ‘junit’, name: ‘junit’, version: ‘4.+’
}
Gradle依赖配置:
在Gradle中依赖可以组合成configurations(配置),一个配置简单地说就是一系列的依赖,通俗说也就是依赖配置;我们可以使用它们声明项目的外部依赖,也可以被用来声明项目的发布。下面我们给出几种Java插件中常见的配置,如下:
- compile
用来编译项目源代码的依赖;
- runtime
在运行时被生成的类需要的依赖,默认项,包含编译时的依赖;
- testCompile
编译测试代码依赖,默认项,包含生成的类运行所需的依赖和编译源代码的依赖;
- testRuntime
运行测试所需要的依赖,默认项,包含上面三个依赖;
各种各样的插件支持许多标准的配置,我们还可以定义自己的配置。
Gradle外部依赖:
我们可以用Gradle声明许多种依赖,其中有一种是外部依赖(external dependency),它是在当前构建之外的一种依赖,一般存放在远程(譬如Maven)或本地的仓库里。如下是一个外部依赖的例子:
dependencies {
compile group: ‘org.hibernate’, name: ‘hibernate-core’, version: ‘3.6.7.Final’
}
可以看见,引用一个外部依赖需要用到group、name、version属性。上面的写法还有一种简写,如下规则:
group:name:version
这是一个简写的例子:
dependencies {
compile ‘org.hibernate:hibernate-core:3.6.7.Final’
}
Gradle仓库:
有了上面的外部依赖,你指定会想Gradle是咋找到那些外部依赖文件的。其实Gradle会在一个仓库(repository)里找这些依赖文件,仓库其实就是很多依赖文件的集合服务器, 他们通过group、name、version进行归类存储,好在Gradle可以解析好几种不同的仓库形式(譬如Maven等),但是Gradle默认不提前定义任何仓库,我们必须手动在使用外部依赖之前定义自己的仓库。</