展开
拓展 关闭
订阅号推广码
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 @   DogLeftover  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示