Gradle之Task操作
2023-11-20 本文已影响0人
奔跑吧李博
各种Task操作:
//task依赖
task hello {
println 'Hello world!'
}
task fine(dependsOn: hello) {
println 'I am fine'
}
//打印 Hello world! I am fine
//任务执行开始、结束的代码执行
task firstLast {
doLast {
println "doLast"
}
doFirst {
println "doFirst"
}
}
//自定义任务属性,用ext声明
task myTask {
ext.myProperty = "myValue"
}
task printTaskProperty {
println(myTask.myProperty)
}
//打印 myValue
//定位 tasks
task location {
//通过属性获取task
println(project.hello.name)
//通过tasks 集合 获取 task
println(tasks['hello'].name)
}
//打印 hello hello
//配置一个任务 - 通过闭包 closure
task myCopy(type: Copy)
myCopy {
println("myCopy task")
}
//打印 myCopy task
// "must run after" 和 "should run after".
task taskX {
println 'taskX'
}
task taskY {
println 'taskY'
}
taskX.mustRunAfter taskY
taskX.shouldRunAfter taskY
//打印 taskX taskY
//给任务加入描述
task description {
description '这是一个task的description'
println description
}
//打印 这是一个task的description
//抛出一个RuntimeException异常
task stopException {
// throw new RuntimeException()
}
//激活和注销 tasks
task disableMe {
println 'disableMe'
}
disableMe.enabled = false
//通过 gradle.properties 文件设置属性
task printProperties {
println gradlePropertiesProp //gradle属性
println System.properties['system'] //system属性
}
//打印 gradlePropertiesValue systemValue
//采用 Project.task(String name) 方法来创建
project.task("myTask3").doLast {
println "doLast in task3"
}
//task类型: 包括 Copy Delete
task copyFile(type: Copy) {
from 'xml'
into 'destination'
}
//自定义Task
//使用自定义task,并通过constructorArgs参数来指定构造函数的参数值
task hello1(type: SayHelloTask, constructorArgs:[30]) {
destDir = file("$buildDir/outputFile")
sayHello() //在task中调用该task的方法
}
task hello2(type: SayHelloTask, constructorArgs:[18]) {
msg = "libo" //在task中设置该task的属性
sayHello()
}
//Hello,defualt name, My age is 30
//打印 Hello,libo, My age is 18
//配置TaskInputs、TaskOutputs 增量构建
//第2次运行时,test1 task 并没有运行,而是被标记为 up-to-date,而 test2 task 则每次都会运行,这就是典型的增量构建。
task test1 {
//设置inputs
inputs.property("name", "hjy")
inputs.property("age", 20)
//设置outputs
outputs.file("$buildDir/test.txt")
doLast {
println "exec task task1"
}
}
task test2 {
doLast {
println "exec task task2"
}
}
参考:
https://juejin.cn/post/6844903838290296846#comment
https://doc.yonyoucloud.com/doc/wiki/project/GradleUserGuide-Wiki/index.html