Gradle中的task

一、创建任务

在groovy语法里,如果最后一个参数是闭包的时候,可以放到括号外面,然后方法的括号可以省略

每个新创建的任务都是 org.gradle.api.DefaultTask 类型

编写build.gradle

/**
 * 第一种创建任务
 * task是Project的一个方法
 * Task task(String name) throws InvalidUserDataException;
 */
def taskA = task taskA
taskA.doLast {
    println "This is TaskA"
    println "taskA分组: ${taskA.group}"
    println "taskA描述: ${taskA.description}"
}

/**
 * 第二种创建任务
 * task是Project的一个方法
 * 可在Map参数中进行相关配置,如依赖、任务描述、组别等
 * Task task(Map<String, ?> args, String name) throws InvalidUserDataException;
 */
def taskB = task(group: BasePlugin.BUILD_GROUP, taskB, description: "描述")
taskB.doLast {
    println "This is taskB"
    println "taskB分组: ${taskB.group}"
    println "taskB描述: ${taskB.description}"
}

/**
 * 第三种创建任务
 * task是Project的一个方法
 * Task task(String name, Closure configureClosure);
 */
task taskC {
    description "taskC的描述"
    group BasePlugin.BUILD_GROUP
    doLast {
        println "This is taskC"
        println "taskC分组: ${taskC.group}"
        println "taskC描述: ${taskC.description}"
    }
}

/**
 * 第四种创建任务
 * task是Project的一个方法
 * 可在闭包中灵活配置,也可在Map参数中配置,闭包中中的配置父覆盖Map中相同的配置
 * Task task(Map<String, ?> args, String name, Closure configureClosure);
 */
def taskD = task(group: BasePlugin.BUILD_GROUP, taskD, description: "描述") {
    description "taskD的描述"
    group BasePlugin.UPLOAD_GROUP
    doLast {
        println "This is taskD"
        println "taskD分组: ${taskD.group}"
        println "taskD描述: ${taskD.description}"
    }
}

/**
 * 第五种创建任务
 * tasks是Project的一个属性,类型是TaskContainer, 使用tasks创建任务
 * Task create(String name, Closure configureClosure) throws InvalidUserDataException;
 */
def taskE = tasks.create("taskE") {
    doLast {
        println "This is taskE"
    }
}

二、自定义task

1.新建目录结构

新建子模块buildSrc

新建目录buildSrc/src/main/groovy

新建包com.example.gradle

groovy目录用于存放源码

2.编写自定义task

新建HelloWorldTask.groovy

package com.example.gradle

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.TaskAction

class HelloWorldTask extends DefaultTask {

    @Optional
    String message = 'this is message'


    @TaskAction
    def doSelf() {
        println "hello world $message"
    }
}

3.build.gradle

子模块buildSrc下新建build.gradle

plugins {
    id 'groovy'
}

group 'com.example.gradle'
version '1.0-SNAPSHOT'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    implementation 'org.codehaus.groovy:groovy-all:2.5.8'
    testImplementation group: 'junit', name: 'junit', version: '4.12'
}

4.使用

可在根build.gradle文件中使用自定义的task

def hello1 = task hello1(type: com.example.gradle.HelloWorldTask) {
    message = "I am a programmer"
    println "configuration"
}

hello1.doLast {
    println "This is hello1"
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值