在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ 閑言構(gòu)建
Groovy 介紹
腳本類、文件 I/O 和 XML 操作
更多
一些前提知識
Gradle 工作流程
基本組件
題外話
總結(jié)
Gradle 編程模型及 API 實例詳解
閉包
Gradle 介紹
閑言構(gòu)建
Groovy 中的數(shù)據(jù)類型

閑言構(gòu)建

構(gòu)建,叫 build 也好,叫 make 也行。反正就是根據(jù)輸入信息然后干一堆事情,最后得到幾個產(chǎn)出物(Artifact)。

最最簡單的構(gòu)建工具就是 make 了。make 就是根據(jù) Makefile 文件中寫的規(guī)則,執(zhí)行對應的命令,然后得到目標產(chǎn)物。

日常生活中,和構(gòu)建最類似的一個場景就是做菜。輸入各種食材,然后按固定的工序,最后得到一盤菜。當然,做同樣一道菜,由于需求不同,做出來的東西也不盡相同。比如,宮保雞丁這道菜,回民要求不能放大油、口淡的要求少放鹽和各種油、辣不怕的男女漢子們可以要求多放辣子....總之,做菜包含固定的工序,但是對于不同條件或需求,需要做不同的處理。

在 Gradle 爆紅之前,常用的構(gòu)建工具是 ANT,然后又進化到 Maven。ANT 和 Maven 這兩個工具其實也還算方便,現(xiàn)在還有很多地方在使用。但是二者都有一些缺點,所以讓更懶得人覺得不是那么方便。比如,Maven 編譯規(guī)則是用 XML 來編寫的。XML 雖然通俗易懂,但是很難在 xml 中描述 if{某條件成立,編譯某文件}/else{編譯其他文件}這樣有不同條件的任務。

怎么解決?怎么解決好?對程序員而言,自然是編程解決,但是有幾個小要求:

  • 這種“編程”不要搞得和程序員理解的編程那樣復雜。寥寥幾筆,輕輕松松把要做的事情描述出來就最好不過。所以,Gradle 選擇了 Groovy。Groovy 基于 Java 并拓展了 Java。 Java 程序員可以無縫切換到使用 Groovy 開發(fā)程序。Groovy 說白了就是把寫 Java 程序變得像寫腳本一樣簡單。寫完就可以執(zhí)行,Groovy 內(nèi)部會將其編譯成 Java class 然后啟動虛擬機來執(zhí)行。當然,這些底層的渣活不需要你管。

  • 除了可以用很靈活的語言來寫構(gòu)建規(guī)則外,Gradle 另外一個特點就是它是一種 DSL,即 Domain Specific Language,領域相關語言。什么是 DSL,說白了它是某個行業(yè)中的行話。還是不明白?徐克導演得《智取威虎山》中就有很典型的 DSL 使用描述,比如:

土匪:蘑菇,你哪路?什么價?(什么人?到哪里去?)  

楊子榮:哈!想啥來啥,想吃奶來了媽媽,想娘家的人,孩子他舅舅來了。(找同行)  

楊子榮:拜見三爺!  

土匪:天王蓋地虎?。愫么蟮哪懀「襾須饽愕淖孀??)  

楊子榮:寶塔鎮(zhèn)河妖?。ㄒ悄菢?,叫我從山上摔死,掉河里淹死。)  

土匪:野雞悶頭鉆,哪能上天王山?。悴皇钦频?。)  

楊子榮:地上有的是米,喂呀,有根底?。ɡ献邮钦频?,老牌的。)  

Gradle 中也有類似的行話,比如 sourceSets 代表源文件的集合等.....太多了,記不住。以后我們都會接觸到這些行話。那么,對使用者而言,這些行話的好處是什么呢?這就是:

一句行話可以包含很多意思,而且在這個行當里的人一聽就懂,不用解釋。另外,基于行話,我們甚至可以建立一個模板,使用者只要往這個模板里填必須要填的內(nèi)容,Gradle 就可以非常漂亮得完成工作,得到想要的東西。

這就和現(xiàn)在的智能炒菜機器似的,只要選擇菜譜,把食材準備好,剩下的事情就不用你操心了。吃貨們對這種做菜方式肯定是以反感為主,太沒有特色了。但是程序員對 Gradle 類似做法卻熱烈擁抱。

到此,大家應該明白要真正學會 Gradle 恐怕是離不開下面兩個基礎知識:

  • Groovy,由于它基于 Java,所以我們僅介紹 Java 之外的東西。了解 Groovy 語言是掌握 Gradle 的基礎。

  • Gradle 作為一個工具,它的行話和它“為人處事”的原則。