Gradle是CI過程工具,而不是系統(tǒng)。持續(xù)集成過程中的構(gòu)建、自動(dòng)化測(cè)試、打包、發(fā)布都可以使用Gradle來完成。而持續(xù)進(jìn)程過程為我們降低各方面成本,提高產(chǎn)品信心,提高產(chǎn)品質(zhì)量有著非常重要的作用(不要問我為啥)。而我們很多研發(fā)人員非常討厭CI過程,這一點(diǎn)的問題原因是研發(fā)人員沒有從CI過程中獲取任何利益,而且還增加了維護(hù)成本。關(guān)于這一點(diǎn)等有機(jī)會(huì)的時(shí)候和大家討論一下《怎么統(tǒng)一研發(fā),質(zhì)量,測(cè)試,管理之間的利益》(統(tǒng)一各方面的利益之后眾志成城,萬(wàn)眾一心,我們的產(chǎn)品會(huì)更上一層樓)。
在使用Gradle過程中發(fā)現(xiàn)在Gradle中的很多特性,很多原理都很特別。這里說明幾個(gè)使用實(shí)踐。(這里不與makefile,maven,ant進(jìn)行對(duì)比)
1.關(guān)于Gradle的執(zhí)行的過程:
很多介紹Gradle的地方,都說Gradle腳本是一種配置腳本。他們說這句話的原因是因?yàn)樵贕radle中提供了很多插件,啟用插件后直接調(diào)用方法閉包進(jìn)行配置就可以完全完成項(xiàng)目需要的功能。所以,Gradle很多時(shí)候都是以配置文件的形式存在的。
但,Gradle的腳本不簡(jiǎn)單是配置文件。從Gradle執(zhí)行的三個(gè)步驟可以看出:
1>Initialization:Gradle 支持單項(xiàng)目或者多項(xiàng)目構(gòu)建,在該階段,Gradle認(rèn)哪些項(xiàng)目會(huì)參與構(gòu)建,然后為每一個(gè)項(xiàng)目創(chuàng)建 Project 對(duì)象
2>Configuration:這個(gè)階段就是配置 Initialization 階段創(chuàng)建的 Project 對(duì)象,所有的配置腳本都會(huì)被執(zhí)行
3>Execution:這個(gè)階段 Gradle 會(huì)確認(rèn)哪些在 Configuration 階段創(chuàng)建和配置的 Task 會(huì)被執(zhí)行,哪些 Task會(huì)被執(zhí)行取決于gradle命令的參數(shù)以及當(dāng)前的目錄,確認(rèn)之后便會(huì)執(zhí)行
大家可以從Gradle執(zhí)行過程得出,Gradle的使用過程不止配置腳本那么簡(jiǎn)單。具體可以看:
1>在初始化階段,Gradle沒有指定默認(rèn)的初始化腳本,必須使用Gradle的命令行參數(shù)進(jìn)行指定。這個(gè)過程可以使用Gradle的Hook來完成相應(yīng)的回調(diào)注冊(cè),以控制整個(gè)Gradle執(zhí)行過程。
參見:https://docs.gradle.org/current/userguide/init_scripts.html