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

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

閑言構(gòu)建

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

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

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

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

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

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

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

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

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

楊子榮:拜見(jiàn)三爺!  

土匪:天王蓋地虎!(你好大的膽!敢來(lái)氣你的祖宗?)  

楊子榮:寶塔鎮(zhèn)河妖?。ㄒ悄菢樱形覐纳缴纤に?,掉河里淹死。)  

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

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

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

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

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

到此,大家應(yīng)該明白要真正學(xué)會(huì) Gradle 恐怕是離不開(kāi)下面兩個(gè)基礎(chǔ)知識(shí):

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

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