首先經過文章咱們將能學習到什麼?編程
下面根據總結的內容開始講述api
Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化構建開源工具。
Gradle不只僅是一個工具,擁有本身的groovy語法,更擁有gradle api,此時不就更是一個編程框架的體現了嘛?
咱們經過下圖來了解下gradle的基本組成部分bash
一、生命週期的介紹
首先咱們來看一個命令的執行過程,以mac系統爲例框架
./gradlew clean
./gradlew build
複製代碼
執行過程分析:
一、首先短暫的Loading階段
二、而後執行一段時間的Configuring階段
三、執行完Configuring後再真正執行clean或者build操做maven
Q1:在執行的時候,爲何會有前面兩步操做?
A1:loading和configuring其實就是gradle生命週期中的前兩個工具
Q2:爲何執行build操做的時候又執行了不少其餘的命令?
A2:在執行clean或者是build操做的時候,其實就是在執行gradle中的Task任務,而Task之間有依賴性,因此必須將其餘依賴的Task的任務先執行完成再執行自身的Task,因此咱們在控制檯就會看到很大一堆的命令輸出了學習
下面咱們用一張圖來理解上面的執行的過程gradle
一、Loding階段也就是初始化階段(Initialization),也就是執行項目中的setting.gradle文件,解析該項目中的全部module,並構建出對應的project對象。ui
二、onfiguring就是配置階段(Configration),該階段就是解析每一個module中的build.gradle文件中的配置信息,在①和②執行的過程當中咱們能夠添加一個Hook,固然這個是經過API來進行操做的。this
三、最後就是執行階段,上面的兩步是第三步執行的前提條件,也就是執行咱們最終的clean、build命令操做。你在gradle命令中指定的Task任務,gradle就會將這個Task任務鏈上的全部任務所有按依賴順序執行一遍。
如今咱們最後來總結下爲何在build的任務的時候會輸出不少東西,見下圖
二、生命週期監聽
常見的監聽方法
//常見的一組
/** *配置階段開始前的監聽回調 **/
this.beforeEvaluate {
println '配置階段執行開始執行'
}
/** *配置階段完成後的監聽回調 **/
this.afterEvaluate {
println '配置階段執行完成'
}
/** *gradle執行完成後的回調監聽 **/
this.gradle.buildFinished {
println '執行階段執行完成'
}
//另一組
this.gradle.beforeProject {}
this.gradle.afterProject {}
this.gradle.buildFinished {}
//另一組
this.gradle.addListener()
this.gradle.addBuildListener()
this.gradle.addProjectEvaluationListener()
複製代碼
當前,咱們以前提到了初始化的過程,那個咱們也能夠在setting.gradle文件中添加以下打印語句
println '初始化階段開始執行'
複製代碼
經過添加上面的代碼後,咱們執行
./gradlew clean
複製代碼
獲得結果