## 1.方法的使用
~~~
task checksum <<{
fileList('../test').each{
ant.checksum(file:file,property:"cs_$file.name")
println "$file.name CheckSum : ${ant.properties["cs_$file.name"]}"
}
}
task loadfile <<{
fileList('../test').each{File file->
ant.loadfile(srcFile:file,property:file.name)
println "I'm fond of $file.name"
}
}
File[] fileList(String dir){
file(dir).listFiles({file->file.isFile()} as FileFilter).sort()
}
~~~
"->"代表賦值,有點類似[lambda](http://baike.baidu.com/link?url=pwd9-SlzkKqfbmFzEBzNdh9xUF3dxuQCNUlgldjwqz1g4AjSSCx2UxBZ36-FQqZ96YmrFEvdQ5LVxC10IoCj9q)語法。
~~~
{file->file.isFile()} as FileFilter
~~~
這句話是添加了一個判斷條件,對于傳過來的dir是一個文件名的話,就不做處理了。
## 2.默認任務
~~~
defaultTasks 'clean','run'
task clean <<{
println 'Default Cleaning!'
}
task run <<{
println 'Default Running!'
}
task other <<{
println "I'm not a default task"
}
~~~
默認任務就是在沒有指定任務名時,這些默認的任務會被執行
~~~
qianhuis-Mac-mini:1228 qianhui$ gradle -q
Default Cleaning!
Default Running!
~~~
上面的缺省了任務名,它可以識別這個時候沒有任務執行,但是它會執行默認的任務。
如果指定了任務名,看看輸出是什么
~~~
qianhuis-Mac-mini:1228 qianhui$ gradle -q other
I'm not a default task
qianhuis-Mac-mini:1228 qianhui$ gradle -q run
Default Running!
~~~
它就會執行它自己的,這有點像java中某個屬性的默認值,如果你賦予一個新的值,默認值就不會起作用。
在多項目的構建中,子項目可以有自己的默認任務,如果子項目沒有,會默認使用繼承父項目的默認任務。
3.使用DAG(有向非循環圖)進行配置
gradle分配置階段和執行階段,配置階段完成后,gradle就知道所有需要被執行的任務。這樣我們就可以利用這些信息了解哪些任務被執行了。下面的例子來判斷任務執行完成后,release任務是否被執行
~~~
task distribution <<{
println "We build the zip with version = $version"
}
task release (dependsOn :'distribution')<<{
println 'We release now'
}
gradle.taskGraph.whenReady {
taskGraph->
if(taskGraph.hasTask(release)){
version = '1.0'
}else {
version = '1.0-SNAPSHOT'
}
}
~
~~~
輸出
~~~
qianhuis-Mac-mini:1228 qianhui$ gradle -q distribution
We build the zip with version = 1.0-SNAPSHOT
~~~
說明上面的DAG中存在release任務,說明release不會被執行。
~~~
qianhuis-Mac-mini:1228 qianhui$ gradle -q release
We build the zip with version = 1.0
We release now
~~~
說明上面的DAG中存在release任務,說明release會被執行。
上面的代碼中需要注意的一點是whenReady,它會在任務執行前起作用。
- 前言
- gradle學習(1)-helloworld
- gradle學習(2)-基礎語法
- gradle學習(3)-基礎認識
- gradle學習(4)-構建java項目
- gradle學習(5)-創建eclipse項目
- gradle學習(6)-依賴管理
- gradle學習(7)-groovy
- gradle學習(8)-gradle的命令行
- gradle學習(9)-獲取build相關信息
- gradle學習(10)-gui
- gradle學習(11)-編寫構建腳本
- gradle學習(12)-groovy一些基礎語法
- gradle學習(13)-有的沒的
- gradle學習(14)-任務
- gradle學習(15)-任務
- gradle學習(16)-操作文件
- gradle學習(17)-被合并的ant
- gradle學習(18)-ant的屬性
- gradle學習(19)-log系統
- gradle學習(20)-詳解java插件
- gradle學習(21)-在eclipse中構建java項目
- gradle復習(1)-2種定義任務方式的區別
- gradle復習(2)-eclipse中添加依賴jar包
- gradle復習(3)-在gradle項目中使用TestNG
- gradle復習(4)-Cannot find System Java Compiler
- gradle復習(5)-Test remote debug
- gradle復習(6)-深入Jacoco
- gradle復習(7)-深入Jacoco
- gradle復習(8)-Task中行為
- gradle學習(22)-Sonar
- gradle學習(23)-Sonar runner