Gradle通過 DAG 配置

2020-07-24 15:44 更新

正如我們之后的詳細(xì)描述 (參見第55章,構(gòu)建的生命周期), Gradle 有一個(gè)配置階段和執(zhí)行階段. 在配置階段后, Gradle 將會(huì)知道應(yīng)執(zhí)行的所有任務(wù). Gradle 為你提供一個(gè)"鉤子", 以便利用這些信息. 舉個(gè)例子, 判斷發(fā)布的任務(wù)是否在要被執(zhí)行的任務(wù)當(dāng)中. 根據(jù)這一點(diǎn), 你可以給一些變量指定不同的值.

在接下來(lái)的例子中, distribution 任務(wù)和 release 任務(wù)將根據(jù)變量的版本產(chǎn)生不同的值.

例子 6.16. 根據(jù)選擇的任務(wù)產(chǎn)生不同的輸出

build.gradle

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

task release(dependsOn: 'distribution') << {
    println 'We release now'
}

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

gradle -q distribution 命令的輸出

> gradle -q distribution
We build the zip with version=1.0-SNAPSHOT
Output of gradle -q release
> gradle -q release
We build the zip with version=1.0
We release now

最重要的是 whenReady 在 release 任務(wù)執(zhí)行之前就已經(jīng)影響了 release 任務(wù). 甚至 release 任務(wù)不是首要任務(wù) (i.e., 首要任務(wù)是指通過 gradle 命令的任務(wù)).


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)