| 1、dependsOn 强依赖方式 |
| 2、通过 Task 输入输出 |
| 3、通过 API 指定执行顺序 |
| |
| 4.times { counter -> |
| tasks.register("task$counter") { |
| doLast { |
| println "I'm task number $counter" |
| } |
| } |
| } |
| |
| 4.times { counter -> |
| tasks.register("task$counter") { |
| doLast { |
| println "I'm task number $counter" |
| } |
| } |
| } |
| tasks.named('task0') { dependsOn('task2', 'task3') } |
-
测试

-
任务的开启与关闭
| # 每个任务都有一个 enabled 默认为的标志 true。将其设置为 false 阻止执行任何任务动作。禁用的任务将标记为“跳过” |
| |
| task disableMe { |
| doLast { |
| println 'This task is Executing...' |
| } |
| enabled(true) |
| } |
| |
| |
| 每个任务都有一个 timeout 可用于限制其执行时间的属性。当任务达到超时时,其任务执行线程将被中断。该任务将被标记为失败。 |
| 终结器任务仍将运行。如果 --continue 使用,其他任务可以在此之后继续运行。不响应中断的任务无法超时。 |
| Gradle 的所有内置任务均会及时响应超时 |
| |
| # 案例 |
| task a() { |
| doLast { |
| Thread.sleep(1000) |
| println "当前任务a执行了" |
| } |
| timeout = Duration.ofMillis(500) |
| } |
| task b() { |
| doLast { |
| println "当前任务b执行了" |
| } |
| } |
| |
| # 在控制台使用: gradle a b 测试会发现执行 a 的时候,由于 a 执行超时,抛出异常,所以没有继续往下执行【b 也没执行】。 |
| # 然后在控制台使用: gradle a b –continue,测试会发现 a 虽然执行失败,但是 b 还是执行 |
| task atguigu { |
| doLast { |
| println "让天下没有难学的技术:尚硅谷" |
| } |
| } |
| |
| |
| tasks.findByName("atguigu").doFirst({println "尚硅谷校区1:北京...."}) |
| tasks.getByName("atguigu").doFirst({println "尚硅谷校区2:深圳...."}) |
| |
| tasks.findByPath(":atguigu").doFirst({println "尚硅谷校区3:上海...."}) |
| tasks.getByPath(":atguigu").doFirst({println "尚硅谷校区4:武汉...."}) |
| |
| # 执行 task: |
| gradle atguigu |
| |
| # 输出 |
| 尚硅谷校区4:武汉.... |
| 尚硅谷校区3:上海.... |
| 尚硅谷校区2:深圳.... |
| 尚硅谷校区1:北京.... |
| 让天下没有难学的技术:尚硅谷 |
| |
| |
| task hello { |
| doLast { |
| println 'hello 尚硅谷的粉丝们' |
| } |
| } |
| |
| tasks.addRule("对该规则的一个描述,便于调试、查看等"){ |
| String taskName -> task(taskName) { |
| doLast { |
| println "该${taskName}任务不存在,请查证后再执行" |
| } |
| } |
| } |
| |
| |
| gradle abc hello |
| |
| |
| # 断言就是一个条件表达式。Task 有一个 onlyIf 方法。它接受一个闭包作为参数,如果该闭包返回 true 则该任务执行,否则跳过。 |
| 这有很多用途,比如控制程序哪些情况下打什么包,什么时候执行单元测试,什么情况下执行单元测试的时候不执行网络测试等 |
| |
| task hello { |
| doLast { |
| println 'hello 尚硅谷的粉丝们' |
| } |
| } |
| |
| hello.onlyIf { !project.hasProperty('fensi') } |
| |
| 测试:通过-P 为 Project 添加 fensi |
| gradle hello -Pfensi |
| |
| |
| defaultTasks 'myClean', 'myRun' |
| tasks.register('myClean'){ |
| doLast { |
| println 'Default Cleaning!' |
| } |
| } |
| |
| tasks.register('myRun') { |
| doLast { |
| println 'Default Running!' |
| } |
| } |
| |
| tasks.register('other') { |
| doLast { |
| println "I'm not a default task!" |
| } |
| } |
| |
| |
| gradle -q |
| |
| |
| Default Cleaning! |
| Default Runnin |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术