Gradle学习笔记(二)

本文通过五个示例详细介绍了Gradle中的任务配置及依赖关系管理,包括排除任务、默认任务、禁用任务、遍历操作以及懒依赖等概念,并提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例一:tutorial\excludeTasks

代码:

task compile << {
    println 'compiling source'
}

task compileTest(dependsOn: compile) << {
    println 'compiling unit tests'
}

task test(dependsOn: [compile, compileTest]) << {
    println 'running unit tests'
}

task dist(dependsOn: [compile, test]) << {
    println 'building the distribution'
}

看着这几个任务,是不是有点晕?我是这感觉!上述代码其实是人物之间有一个相互依赖的关系,一个任务可以依赖一个task,也可以依赖多个。task依赖的语法可以看做这样:

 task NameA(dependsOn:NameB)//单任务依赖
 task NameD(dependsOn:[NameA,NameB,NameC]) //多任务依赖

如何看这个任务的任务结构呢?执行命令

gradle tasks  --all

看结果:

tasks - Displays the tasks runnable from root project 'excludeTasks'.

Other tasks
-----------
dist
    compile
    compileTest
    test

BUILD SUCCESSFUL

Total time: 3.838 secs

示例二:tutorial\defaultTasks

代码:

defaultTasks 'clean', 'run'

task clean << {
    println 'Default Cleaning!'
}

task run << {
    println 'Default Running!'
}

task other << {
    println "I'm not a default task!"
}

由于在文件开头,使用了属性defaultTasks,指定了默认的任务,所以在执行时,可以这么执行

gradle

不需要指定特定的任务,即可运行默认的任务,默认是按默认任务的列表顺序执行的。defaultTasks是Project的属性,可以从api里找到file:///D:/Java/Gradle/gradle-2.8/docs/dsl/org.gradle.api.Project.html#org.gradle.api.Project:defaultTasks

示例三:tutorial\disableTask

代码:

task disableMe << {
    println 'This should not be printed if the task is disabled.'
}
disableMe.enabled = false

如果执行上面的任务,我们会得到什么结果呢?

>gradle disableMe
:disableMe SKIPPED

BUILD SUCCESSFUL

很可惜,什么都没有!原因是给task加了个属性,直接跳过了!task有多少属性呢?我的sdk在这里
file:///D:/Java/Gradle/gradle-2.8/docs/dsl/org.gradle.api.Task.html,关于属性enabled,有这样一个解释:

boolean enabled
Returns if this task is enabled or not.

返回类型为boolean,设置该task能否执行。在任务块里,可以直接调用task的属性

任务四:tutorial\count

代码:

task count << {
    4.times { print "$it " }
}

分析:该任务count 调用了一个默认方法,times{}, 进行遍历, $it ,注意it是代表整数,如果是整数,不能用其他代码!这个it在gradle里为整数型! 这里有个困惑,在查找api中没有找到这个方法的位置,如果您知道,希望您给予知道,不胜感激!
补充一点关于times的使用心得:
下面是我自己随意写的gradle,对times的使用进行了扩展,代码如下:

task dd << {
5.times{
dddddd -> println("ddddddddd:"+dddddd)
println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa:$dddddd")
}
}

其中,dd为任务名,dddddd是我随意起的遍历次数的变量名, 使用”->“ 进行了变量的声明,而且只能声明一次,符号”->”是必须的! 这个地方我是根据代码改写的,没有找到理论基础,如果您知道,希望您给予知道,不胜感激!*

任务五:tutorial\lazyDependsOn

代码:
下面的代码作用是延时依赖,或者叫懒依赖,就是先确定依赖任务,不管该任务存不存在。如果不存在,后面再进行创建!

task taskX(dependsOn: 'taskY') << {
    println 'taskX'
}
task taskY << {
    println 'taskY'
}

分析: 创建这种依赖,所依赖的任务名先确定,使用''单引号来包裹这个任务名,这个任务可以在引用后面再进行创建!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值