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