Gradle 第三讲 之 task依赖及属性设置

来源:互联网 发布:淘宝名模周婷简历 编辑:程序博客网 时间:2024/05/14 02:10

本讲继续根据gradle user guide进行学习

1.任务依赖

2.动态任务

3.快捷标记

4.附加的task属性


1.任务依赖:


task intro(dependsOn: hello){

        doLast{

            println "I'm Gradle"

        }

}


task hello{

    doLast{

        println 'Hello world!'

    }

}


输入:wudideMacBook-Pro:gradle ***$ gradle -q intro

Hello world!

I'm Gradle


这里有两点需要说明:

    1)所依赖到task不需要在依赖之前声明

    2)所依赖的task不一定会先执行,我将代码稍微更改如下:

task intro(dependsOn: hello){

        println "I'm Gradle"

}


输入:wudideMacBook-Pro:gradle ***$ gradle -q intro

I'm Gradle

Hello world!

看执行顺序改变了吧,这个的执行顺序与doLast有关,下面来介绍他的作用

task hello{

   doFirst{

        println 'Hello world first'

   }

   doLast{

        println 'Hello world!'

    }

}


task intro(dependsOn: hello){

        println "I'm Gradle"         //这个永远是最先执行的

        doLast{

            println 'do last first'

        }

        doFirst{

            println 'do first'

        }


        doLast{

            println 'do last'

        }

}

输入:gradle -q intro

I'm Gradle

Hello world first

Hello world!

do first

do last first

do last

总结:

1.不加doLast和doFirst的最先执行

2.依赖task优先级高于自己的doFirst和doLast

3.同一个task中的doLast按从上向下顺序执行

4.同一个task中的doFirst按从下到上倒序执行

5.同一个task的doFirst优先级高于doLast

这样是不是就都掌握了吗?在看个例子:

task intro(dependsOn: hello){

        println "I'm Gradle"

}


intro.doFirst{

        println 'do last first'

}

intro.doFirst{

        println 'do first'

}

intro.doLast{

        println 'do last'

}

调整了一下结构,但其实结果是相同的,只是把里面的内容拿出来了,这样看着更舒服一些

再来改一下:

task intro(dependsOn: hello) << {

        println "I'm Gradle"

}


intro.doFirst{

        println 'do last first'

}

intro.doFirst{

        println 'do first'

}

intro.doLast{

        println 'do last'

}

再来看看结果吧:

输入:wudideMacBook-Pro:gradle ***$ gradle -q intro

Hello world first

Hello world!

do first

do last first

I'm Gradle

do last

变了,原来 << 的作用是doLast的省略,下面根据上面的介绍在分析一下就知道了吧


2.动态任务

还记得我们之前使用n.times吧,除了作为循环等操作使用以外,还可以做动态任务

4.times{

    count -> task "task$count" <<{

        println "I'm task number $count"

    }

}

输入:wudideMacBook-Pro:gradle ***$ gradle -q task1

I'm task number 1

PS:count这个是你随意制定的变量


3.快捷标记

task notations << {

    println 'Hello world!'

}

notations.doLast {

    println "Greetings from the $hello.name task."         //$hello.name是默认属性,代表task的名字,

}


输入:wudideMacBook-Pro:gradle ***$ gradle -q notations

Hello world!

Greetings from the hello task.

这里介绍了默认的属性,下面再介绍一下如何自定义属性值

4.附加的task属性


task myTask {

    ext.myProperty = "myValue"            //初始化字符串

    ext.myAge = 25                        //初始化整形

    ext.job = "play"+myAge                //初始化运算

}


task printTaskProperties << {

    println myTask.myProperty

    println myTask.myAge

    println myTask.job

}

输入:wudideMacBook-Pro:gradle ***$ gradle -q printTaskProperties

myValue

25

play25

PS:这里的ext是固定的,系统制定的,再自己的task中是可以进行运算的,但不能没有ext


0 1