展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

任务入门

# 执行任务
gradle -i 任务名

  • 也可以定义到任务的外面

  • action使用

def map=new HashMap<String,Object>(); //action属性可以设置为闭包,设置task自身的行为
map.put("action",{println "taskD.."})

task(map,"a"){
    description 'taskA description....' group "atguigu" //在task内部定义doFirst、doLast行为

    doFirst {
        def name = 'doFirst..' println name 
    }

    doLast {
        def name = 'doLast..' println name 
    }
}

//在task外部定义doFirst、doLast行为
a.doFirst {
    println it.description
}

a.doLast {
    println it.group
}
  • 测试
gradle -i a

  • 底层原理分析:
无论是定义任务自身的 action,还是添加的 doLast、doFirst 方法,其实底层都被放入到一个 Action 的 List中了,最初这个 action List 是空的,
当我们设置了 action【任务自身的行为】,它先将 action 添加到列表中,此时列表中只有一个 action,后续执行 doFirst 的时候 doFirst 在 action
前面添加,执行 doLast 的时候 doLast 在 action 后面添加。doFirst永远添加在 actions List 的第一位,保证添加的 Action 在现有的 action 
List 元素的最前面;doLast 永远都是在 action List末尾添加,保证其添加的 Action 在现有的 action List 元素的最后面。一个往前面添加,一个
往后面添加,最后这个 action List 就按顺序形成了 doFirst、doSelf、doLast 三部分的 Actions,就达到 doFirst、doSelf、doLast 三部分的
Actions 顺序执行的目的
posted @ 2022-08-02 10:07  DogLeftover  阅读(12)  评论(0编辑  收藏  举报