12--Gradle进阶 - Gradle任务的类型
任务类型
前面我们定义的task 都是DefaultTask 类型的,如果要完成某些具体的操作完全需要我们自己去编写gradle 脚本,势必有些麻烦,那有没有一些现成的任务类型可以使用呢?有的,Gradle 官网给出了一些现成的任务类型帮助我们快速完成想要的任务,我们只需要在创建任务的时候,指定当前任务的类型即可,然后即可使用这种类型中的属性和API 方法了。
常见任务类型 | 该类型任务的作用 |
---|---|
Delete | 删除文件或目录 |
Copy | 将文件复制到目标目录中。此任务还可以在复制时重命名和筛选文件。 |
CreateStartScripts | 创建启动脚本 |
Exec | 执行命令行进程 |
GenerateMavenPom | 生成 Maven 模块描述符(POM)文件。 |
GradleBuild | 执行 Gradle 构建 |
Jar | 组装 JAR 归档文件 |
JavaCompile | 编译 Java 源文件 |
Javadoc | 为 Java 类 生 成 HTML API 文 档 |
PublishToMavenRepository | 将 MavenPublication 发布到 mavenartifactrepostal。 |
Tar | 组装 TAR 存档文件 |
Test | 执行 JUnit (3.8.x、4.x 或 5.x)或 TestNG 测试。 |
Upload | 将 Configuration 的构件上传到一组存储库。 |
War | 组装 WAR 档案。 |
Zip | 组装 ZIP 归档文件。默认是压缩 ZIP 的内容。 |
如果想看更详细的gradle 自带Task 类型,请参考官方文档:
https://docs.gradle.org/current/userguide/custom_tasks.html#header
操作案例
1.编写 Delete 类型的任务
// 任务类型
// 编写 Delete 类型的任务:删除 build 目录
tasks.register('myClean', Delete) {
delete buildDir
}
我们希望可以删除 build 的目录,如下:
执行该任务,如下:
gradle myClean
可以看到我们已经成功将 project 的 build 目录删除了,下面我们再来看看如何自定义任务。
2.自定义 task 类型
/**
* 1.创建任务 MyDefinitionTask,任务类型为 CustomTask
*
* 2.自定义 CustomTask 的类型
* - 该任务会执行 doFirst、doLast
*/
def myTask = task MyDefinitionTask(type: CustomTask)
myTask.doFirst() {
println "task 执行之前 执行的 doFirst方法"
}
myTask.doLast() {
println "task 执行之后 执行的 doLast方法"
}
// 3. 继承DefaultTask,实现CustomTask
class CustomTask extends DefaultTask {
//@TaskAction表示Task本身要执行的方法
@TaskAction
def doSelf() {
println "Task 自身 在执行的in doSelf"
}
}
执行如下:
gradle MyDefinitionTask