gradle系列——Task任务简单使用

今日名言
迷茫就是才华配不上梦想

工程和任务

在 Gradle 的世界中最重要的两个概念就是:工程( Project )和任务( Task )。

每一个 Gradle 的项目都会包含一个或多个工程,而每一个工程的职责又取决于我们对这个工程的定义,比如:一个工程可能是公共的 JAR 库,或者是一个 WEB 的应用程序,也可能是一个用于发布部署的 ZIP 包,而这个 ZIP 包又是通过其它工程编译打包的 JAR 文件组装成的。

每一个工程又由一个或多个任务组成,一个任务代表了一个工作的最小单元,它可以是一次类的编译、打一个 JAR 包、生成一份 Javadoc 或者是向仓库中提交一次版本发布。

任务的简单使用

当我们使用 Gradle 的命令时,比如gradle build,Gradle 命令会去寻找当前目录下的 build.gradle 的文件,这个文件是 Gradle 的脚本文件,它里面定义了工程和工程拥有的所有任务等信息。

下面是一个简单的任务

task hello {
    doLast {
        println("hello world!")
    }
}

在以上代码中,我们定义了一个 hello 的任务,然后为它添加了一个动作( action ),当执行gradle hello命令时,该命令会调用 hello 任务,然后执行它的动作,打印输出了“ Hello world!”,这个动作是一个 groovy 的闭包函数。

任务的依赖关系

我们可以定义一个任务依赖于某个其它的任务,比如一个发布( release )任务必须依赖编译( build )任务,代码如下:

task build {
    doLast {
        println "i'm build task"
    }
}

task release(dependsOn: build) {
    doLast {
        println "I'm release task"
    }
}

输出结果是先执行build里的打印,然后再执行release里的打印

对现有任务添加依赖关系

task build {
    doLast {
        println "i'm build task"
    }
}

task release() {
    doLast {
        println "I'm release task"
    }
}

// 添任务依赖关系
release.dependsOn build

对现有的任务添加动作行为

task hello {
    doLast {
        println 'Hello World!'
    }
}

// 法方一,在doFirst动作中添加
hello.doFirst {
    println 'Hello doFirst'
}

// 法方二 在doLast动作中添加
hello.doLast {
    println 'Hello doLast1'
}

// 法方三 在doLast动作中添加
hello {
    doLast {
        println 'Hello doLast2'
    }
}

执行结果为

Hello doFirst

Hello World!

Hello doLast1

Hello doLast2

访问现有任务的属性值

task hello {
    doLast {
        println "Hello world! from the $hello.name task."
    }
}

在任务中调用 groovy 方法

task hello {
    doLast {
        int a = 1,b = 2;
        int result = add(a,b);
        println "a add b is = " + result;
    }
}

int add(int a,int b) {
    a + b;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章