java代码写在脚本中
gradle构建脚本本可以写java代码,groove语言支持java代码
java 类定义
1 | public class VersionEntity { |
定义属性文件
ext.f = file(“version.properties”);
java 方法定义
1 | VersionEntity GenerateVersion() throws FileNotFoundException, IOException{ |
调用project的task方法创建继承于defaultTask的task
1 | task ver { |
自定义task类
自定义task 类 也可以在java代码中定义,不过需要导入相应的包,此处gradle已经提供
1 | class myDefaultTask extends DefaultTask { |
测试增量式构建
1 | task ceShiMyDefaultTask(type: myDefaultTask){ |
文件复制,可以参考api中Copy类
这种文件复制 类似于 调用方法
1 | task ccc(){ |
这种文件复制 类似于继承 输入输出定义在父类中 此task执行一次就不会执行了
1 |
|
task规则
简单task只需project的task即可以添加,但是task规则只能通过taskContainer容器的addRule(String,Closure)方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19tasks.addRule('Pattern: Test<Classifier>My: 测试task规则.'){
String taskName ->
if (taskName.startsWith('Test') && taskName.endsWith('My')){
task (taskName) {
doLast{
String classifier = taskName - 'Test' - 'My'
switch(classifier){
case '1' : println '任务---1'
break
case '2' : println '任务---2'
break
default: println '任务000'
}
}
}
}
}
编写生命周期钩子,类似于监听,事件是任务蓝图创建完成后
1 | gradle.taskGraph.whenReady {taskGraph -> |
不依赖依赖的task,控制执行顺序
1 finalizedBy就是在task执行完之后要执行的task。
2 mustRunAfter并不会添加依赖,它只是告诉Gradle执行的优先级如果两个task同时存在
总结
- 重点把握对生命周期、执行顺序的认识
- 借助gradle插件库查看源码,进行学习