W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
舉一個例子, 讓我們看一看 Gradle 自帶的 Copy task. 為了創(chuàng)建一個 Copy task, 你需要在你的構(gòu)建腳本里先聲明它:
例子 15.7. 創(chuàng)建一個 copy task
build.gradle
task myCopy(type: Copy)
它創(chuàng)建了一個沒有默認(rèn)行為的 copy task. 這個 task 可以通過它的 API 來配置(參考 Copy). 接下來例子展示了不同的實現(xiàn)方法.
補(bǔ)充說明一下, 這個 task 的名字是 “myCopy”, 但是它是 “Copy” 類(type). 你可以有許多同樣 type 不同名字的 tasks. 這個在實現(xiàn)特定類型的所有任務(wù)的 cross-cutting concerns 時特別有用.
例子 15.8. 配置一個任務(wù) - 不同的方法
build.gradle
Copy myCopy = task(myCopy, type: Copy)
myCopy.from 'resources'
myCopy.into 'target'
myCopy.include('**/*.txt', '**/*.xml', '**/*.properties')
這個我們通過 Java 配置對象是一樣的形式. 但是你每次都必須在語句里重復(fù)上下文 (myCopy). 這種方式可能讀起來并不是那么的漂亮.
下面一種方式就解決了這個問題. 是公認(rèn)的最具可讀性的方式.
例子 15.9. 配置一個任務(wù) - 通過閉包 closure
build.gradle
task myCopy(type: Copy)
myCopy {
from 'resources'
into 'target'
include('**/*.txt', '**/*.xml', '**/*.properties')
}
上面例子里的第三行是 tasks.getByName() 方法的一個簡潔的寫法. 特別要注意的是, 如果你通過閉包的形式來實現(xiàn) getByName() 方法, 這個閉包會在 task 配置的時候執(zhí)行而不是在 task 運行的時候執(zhí)行.
你也可以直接在定義 task 時使用閉包.
例子 15.10. 通過定義一個任務(wù)
build.gradle
task copy(type: Copy) {
from 'resources'
into 'target'
include('**/*.txt', '**/*.xml', '**/*.properties')
}
請不要忘了構(gòu)建的各個階段.
一個任務(wù)有配置和動作. 當(dāng)使用 << 時, 你只是簡單的使用捷徑定義了動作. 定義在配置區(qū)域的代碼只會在構(gòu)建的配置階段執(zhí)行, 而且不論執(zhí)行哪個任務(wù). 可以參考第 55 章, The Build Lifecycle for more details about the build lifecycle.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: