Gradle入门-构建脚本的基础介绍

几种创建 gradle 任务的方法

1.普通创建

task hello1 {
    doLast{
        println 'hello1'
    }
}

2.直接用任务名称创建

Task hello2 = task(hello2)
hello2.doLast {
    println "hello2"
}

3.任务名称+任务配置创建

Task hello3 = task(hello3,group: BasePlugin.BUILD_GROUP)
hello3.doLast {
    println "hello3"
}

4.TaskContainer 的 create 方法创建

tasks.create(name: 'hello4') {
    doLast {
        println "hello4"
    }
}

任务依赖

1.依赖于已经存在的任务的任务声明

task hello {
    doLast{
        println 'hello'
    }
}

task intro{
    dependsOn hello
    doLast {
        println "I'm Gradle"
    }
}

执行: gradle -q intro

输出:
hello
I'm Gradle

2.懒惰依赖-另一项任务不存在(目前还不存在

task hello {
    dependsOn 'afterhello'
    doLast{
        println 'hello'
    }
}

task afterhello{
    doLast {
        println "after hello task"
    }
}

执行: gradle -q hello

输出:

after hello task
hello

动态定义任务

动态定义任务指的是在运行时来定义任务的名称

4.times { counter ->
    task "task$counter" {
        doLast {
            println "I'm task number $counter"
        }
    }
}

times是Groovyjava.lang.Number中拓展的方法,是一个定时器。4.times中循环创建了三个新任务,隐式变量number的值为0,1,2,3 任务的名称由 task 加上 number 的值组成,达到了动态定义任务的目的。

执行:gradle -q task0

输出:I'm task number 0

操作现有任务

它在运行时动态地向任务添加依赖项

1.通过 api 访问任务-添加依赖项

4.times { counter ->
    task "task$counter" {
        doLast {
            println "I'm task number $counter"
        }
    }
}
task0.dependsOn task2, task3

执行:gradle -q task0

输出:

I'm task number 2
I'm task number 3
I'm task number 0

也可以将行为添加到现有任务中。

2.通过 api 添加行为访问任务

task hello {
    doLast {
        println 'Hello Earth'
    }
}
hello.doFirst {
    println 'Hello Venus'
}
hello.configure {
    doLast {
        println 'Hello Mars'
    }
}
hello.configure {
    doLast {
        println 'Hello Jupiter'
    }
}

执行:gradle -q hello

输出:

Hello Venus
Hello Earth
Hello Mars
Hello Jupiter

Groovy DSL快捷表示

作为构建脚本的属性访问任务

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

执行:gradle -q hello

输出:

Hello world!
Greetings from the hello task.

默认任务

Gradle允许您定义一个或多个默认任务,如果没有指定其他任务,则可以执行这些任务。

defaultTasks 'clean', 'run'

task clean {
    doLast {
        println 'Default Cleaning!'
    }
}

task run {
    doLast {
        println 'Default Running!'
    }
}

task other {
    doLast {
        println "I'm not a default task!"
    }
}

执行:gradle -q

输出:

Default Cleaning!
Default Running!

DAG 配置

Gradle有一个配置阶段和一个执行阶段。在配置阶段之后,Gradle知道应该执行的所有任务。Gradle为您提供了一个利用这些信息的钩子。这样做的一个用例是检查发布任务是否在要执行的任务中。根据这一点,您可以为某些变量分配不同的值。

在下面的示例中,执行distributionrelease任务导致不同的值。version变量。

task distribution {
    doLast {
        println "We build the zip with version=$version"
    }
}

task release {
    dependsOn 'distribution'
    doLast {
        println 'We release now'
    }
}

gradle.taskGraph.whenReady { taskGraph ->
    if (taskGraph.hasTask(":release")) {
        version = '1.0'
    } else {
        version = '1.0-SNAPSHOT'
    }
}

执行: gradle -q distribution

输出:We build the zip with version=1.0-SNAPSHOT

执行: gradle -q release

输出:We build the zip with version=1.0

posted @ 2020-06-04 11:01  花染梦  阅读(252)  评论(0编辑  收藏  举报