Gradle理論與實踐一:Gradle入門
文章目錄
Gradle入門
Gradle一門DSL(Domain Specific Language,領域特定語言),Gradle基於Groovy語言,專門用來解決自動化構建。Gradle可以認為是一個框架,負責定義流程和規則。而具體的編譯工作則是通過外掛的方式來完成的。比如編譯 Java 有 Java 外掛,編譯 Groovy 有 Groovy 外掛,編譯 Android APP 有 Android APP 外掛,編譯 Android Library 有 Android Library 外掛。
1、配置Gradle環境
1、下載Gradle地址:https://gradle.org/
2、下載相應版本的Gradle,我的筆記本是Mac,下載的是v4.10.2版本:
3、下載完之後,我放到了/Users/mq/gradle-4.10.2/目錄下,要執行Gradle,必須把GRADLE_HOME/bin目錄新增到環境變數PATH的路徑才可以,下面是配置Mac的步驟:開啟Mac終端,輸入: open -e .bash_profile
,開啟.bash_profile檔案,接著編輯.bash_profile檔案:
GRADLE_HOME=/Users/mq/gradle-4.10.2; export GRADLE_HOME export PATH=$PATH:$GRADLE_HOME/bin
如下:
儲存一下.bash_profile檔案,最後在終端上執行source ~/.bash_profile
命令,更新.bash_profile檔案
4、最後驗證一下結果,進入到Gradle安裝目錄中,輸入命令cd /Users/mq/gradle-4.10.2/
,接著輸入gradle -version
或者gradle -v
,如果結果如下就是安裝成功了:
mqdeMacBook-Pro:gradle-4.10.2 mq$ gradle -version ------------------------------------------------------------ Gradle 4.10.2 ------------------------------------------------------------ Build time: 2018-09-19 18:10:15 UTC Revision: b4d8d5d170bb4ba516e88d7fe5647e2323d791dd Kotlin DSL: 1.0-rc-6 Kotlin: 1.2.61 Groovy: 2.4.15 Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018 JVM: 1.8.0_151 (Oracle Corporation 25.151-b12) OS: Mac OS X 10.13.6 x86_64
2、Gradle之Hello World
找到Gradle安裝的目錄,其中有個/bin目錄,我的是/Users/mq/gradle-4.10.2/bin,開啟bin目錄並建立一個build.gradle檔案,寫入:
task hello << {
print 'hello world'
}
在終端進入到對應的/bin目錄,輸入命令gradle -q hello
, 輸出:
mqdeMacBook-Pro:test_gradle mq$ gradle -q hello
hello world
一個簡單的hello world就完成了,說明:build.gradle是Gradle預設的構建指令碼檔案,執行命令時會預設載入當前目錄下的build.gradle檔案。每個Gradle構建都包含三個基本構建塊:project、task、property.
3、gradle 與gradlew的區別
gradle版本會不斷更新,多人協作開發時,每個人使用的版本可能會不同。而gradlew(wrapper)可以看成是gradle的一層包裝,讓我們使用相同版本的gradle進行構建,我們在gradle -> wrapper中可以看到gradle-wrapper.properties檔案,制定了gradle的版本。
4、Gradle命令介紹
- gradle projects 檢視工程資訊
- gradle tasks 檢視任務資訊
- gradle task name 執行task任務
5、Gradle 工作流程
以multi-project build為例,Gradle工作流程如下:
- 初始化階段:首先解析settings.gradle
- Configration階段:解析每個Project中的build.gradle,解析過程中並不會執行各個build.gradle中的task。
- 經過Configration階段,Project之間及內部Task之間的關係就確定了。一個 Project 包含很多 Task,每個 Task 之間有依賴關係。Configuration 會建立一個有向圖來描述 Task 之間的依賴關係, 所有Project配置完成後,會有一個回撥project.afterEvaluate,表示所有的模組都已經配置完了。
- 執行Task任務