【Gradle task】 自定义编写注册任务 Writing Tasks

【gradle task】 自定义编写注册任务 Writing Tasks

创建任务

创建自定义任务的最简单、最快捷的方式是在构建脚本中:

为了创建一个任务,继承DefaultTask类并实现@TaskAction处理程序:

abstract class CreateFileTask extends DefaultTask {
    @TaskAction
    void action() {
        File file = new File("myfile.txt")
        file.createNewFile()
        file.writeText("HELLO FROM MY TASK")
    }
}

CreateFileTask实现了一组简单的操作。首先,在主项目中创建了一个名为"myfile.txt"的文件。然后,向文件中写入一些文本。

注册任务

使用TaskContainer.register()方法在构建脚本中注册任务,这样就可以在构建逻辑中使用它。

tasks.register(CreateFileTask, "createFileTask")

任务分组和描述

设置任务的group和description属性可以帮助用户理解如何使用任务:

abstract class CreateFileTask extends DefaultTask {
    @TaskAction
    void action() {
        File file = new File("myfile.txt")
        file.createNewFile()
        file.writeText("HELLO FROM MY TASK")
    }
}

tasks.register(CreateFileTask, "createFileTask") {
    group = "custom"
    description = "在当前目录下创建myfile.txt文件"
}

一旦将任务添加到分组中,在列出任务时它就可见了。

任务输入和输出

为了让任务执行有用的工作,通常需要一些输入。任务通常会产生输出。

abstract class CreateFileTask extends DefaultTask {
    @Input
    final String fileText = "HELLO FROM MY TASK"

    @Input
    final String fileName = "myfile.txt"

    @OutputFile
    final File myFile = new File(fileName)

    @TaskAction
    void action() {
        myFile.createNewFile()
        myFile.writeText(fileText)
    }
}

tasks.register(CreateFileTask, "createFileTask") {
    group = "custom"
    description = "在当前目录下创建myfile.txt文件"
}

配置任务

可以使用TaskCollection.named()方法在构建脚本中可选地配置任务。

CreateFileTask类已更新,以使文件中的文本是可配置的:

abstract class CreateFileTask extends DefaultTask {
    @get:Input
    abstract val fileText: Property<String>

    @Input
    val fileName = "myfile.txt"

    @OutputFile
    val myFile: File = File(fileName)

    @TaskAction
    fun action() {
        myFile.createNewFile()
        myFile.writeText(fileText.get())
    }
}

tasks.register<CreateFileTask>("createFileTask") {
    group = "custom"
    description = "在当前目录下创建myfile.txt文件"
    fileText.convention("HELLO FROM THE CREATE FILE TASK METHOD") // 设置约定
}

tasks.named<CreateFileTask>("createFileTask") {
    fileText.set("HELLO FROM THE NAMED METHOD") // 用自定义消息覆盖约定
}

在named()方法中,我们找到了createFileTask任务,并设置将写入文件的文本。

当执行该任务时:

$ ./gradlew createFileTask

> Configure project :app

> Task :app:createFileTask

BUILD SUCCESSFUL in 5s
2 actionable tasks: 1 executed, 1 up-to-date

在项目根目录中创建了一个名为myfile.txt的文本文件:

myfile.txt
HELLO FROM THE NAMED METHOD

请参考Developing Gradle Tasks章节以了解更多信息。

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值