gradle学习(3)-基础认识

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语法。


{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,它会在任务执行前起作用。

你可能感兴趣的:(学习)