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