1. 程式人生 > >gradle學習筆記(一) 構建工具介紹

gradle學習筆記(一) 構建工具介紹

前言:

在android開發中平常所接觸的gradle指令碼,配置好了點選run按鈕就能編譯、打包、安裝等等操作,編譯出想要的apk,大大方便了開發過程。但是自己對gradle的瞭解和掌握僅僅只是夠用,於是大量查資料開始學習gradle。

這篇筆記主要解釋了構建的概念、什麼是構建工具,和gradle的基礎概念,並清晰解釋了學好gradle的必須基礎:groovy 和 響應的DSL。

1. 什麼是構建

構建是一個物件,環境,和生成軟體產品方法的集合。

這裡邊包含了三方面的意思 
1. 構建物件,就是構建的輸入。構建的物件包括原始碼(source code),釋出事項(release notes),readme檔案,變更記錄(change log)等構建的原材料。 
2. 構建環境就是一個可以進行構建,生成軟體產品的地方。 
3. 構建方法。構建方法告訴我們在構建環境中,按照構建方法所描述的內容,對構建物件進行構建就可以生成軟體產品。

通俗的說,構建就是根據輸入資訊然後幹一堆事情,最後得到幾個產出物(Artifact)。 
“構建”通常是指建設的過程。構建過程可能包含有計劃,設計,檢查工作的一些方面,但是在大多數時候,構建就是指建立事物過程中動手的那些部分。

2. 構建工具

構建工具概念

構建工具是一個可程式設計的工具,能夠以可執行和有序的任務來表達滿足需要的自動化過程。
構建工具就是用來讓我們不再做機械重複的事情,解放我們的雙手的。
Java中的構建工具

現在Java世界的常用構建工具:

Ant 
Ant使用XML作為指令碼編寫格式。 XML,本質上是層次化的,並不能很好地貼合Ant過程化程式設計的初衷。Ant的另外一個問題是,除非是很小的專案,否則它的XML檔案很快就大得無法管理。

Maven 
Maven的也使用xml作為指令碼。XML作為配置檔案的格式有嚴格的結構層次和標準,定製化目標(goal)很困難。因為Maven主要聚焦於依賴管理,實際上用Maven很難寫出複雜、定製化的構建指令碼。 
即很難描述出if(某條件) xxx else(某條件) xxx,這樣的語句。

Gradle

Gradle結合了前兩者的優點,在此基礎之上做了很多改進。它具有Ant的強大和靈活,又有Maven的生命週期管理且易於使用。
Gradle不用XML,它使用基於Groovy的專門的DSL,從而使Gradle構建指令碼變得比用Ant和Maven寫的要簡潔清晰。Gradle樣板檔案的程式碼很少,這是因為它的DSL被設計用於解決特定的問題:貫穿軟體的生命週期,從編譯,到靜態檢查,到測試,直到打包和部署。
3. Gradle介紹

基於:

gradle基於groovy。所以能很好解決Maven的侷限性,很方便寫出複雜、定製化的構建指令碼。
gradle是一種DSL(Domain Specific Language),領域特定語言。 
所謂領域專用語言(Domain Specific Language/DSL),其基本思想是“求專不求全”,不像通用目的語言那樣目標範圍涵蓋一切軟體問題,而是專門針對某一特定問題的計算機語言。 
DSL通俗講就是行話。 
在Android studio構建中,該行話就是: Android Plugin DSL Reference。必須要了解它才能寫好配置指令碼。
如何學習:

知道了gradle基於基於groovy,並是一種DSL,所以要想掌握gradle,必須要了解這麼兩個基礎知識 :

Groovy。瞭解Groovy語言是掌握Gradle的基礎。
瞭解Gradle的DSL。瞭解Gradle的行話。
 

參考

深入理解Android之Gradle <—這篇文章真的好!!!全部基於該文章而理解。 
什麼是構建 
什麼是構建工具 
Java構建工具:Ant vs Maven vs Gradle