Gradle教程(一)

原文地址:http://rominirani.com/2014/07/28/gradle-tutorial-part-1-installation-setup/

在這個(gè)教程中填硕,我們將注意力集中在Gradle的啟動上。盡管Android Studio內(nèi)置了Gradle性含,我們現(xiàn)在的目標(biāo)是理解Gradle的安裝连茧,啟動憋肖,執(zhí)行基本的Gradle命令。

在我們開始前,如果你想知道為什么Gradle是構(gòu)建工具很好的選擇,我建議你閱讀這篇文章article迹辐。盡管需要基礎(chǔ)才能閱讀它,這篇文章將開拓你的視野為什么開發(fā)者如此擁簇Gradle.

接下來幾部分將會帶你安裝Gradle甚侣。Gradle需要java環(huán)境明吩,我假設(shè)你是java開發(fā)者,已經(jīng)安裝了java sdk在你的機(jī)器上殷费。

下載 Gradle

目前為止印荔,Gradle最新版是2.2.1可以在這里獲取低葫。

下載zip文件到你機(jī)器上。你會發(fā)現(xiàn)它的文件名為gradle-2.2.2-all.zip仍律。將它解壓縮嘿悬。

在我的機(jī)器上,我將它解壓到e:\gradle-2.2.1,所以我將看到如下的子文件夾:

圖片
圖片

你可能會問為什么你需要單獨(dú)安裝Gradle水泉。如果你已經(jīng)安裝了Android Studio你將會注意到這點(diǎn)善涨。正如所知的,Android Studio內(nèi)置了Gradle草则,沒必要再次安裝Gradle钢拧。

后面的教程中我們將會討論Android Studio,使用它內(nèi)置的Gradle炕横。這章和接下來的幾章我們會從我們自己安裝的Gradle開始源内,運(yùn)行命令行,近距離得接觸它份殿,以便理解他到底做了什么膜钓。后面,當(dāng)Android Studio做這些事的時(shí)候伯铣,我們將更好的理解發(fā)生了什么呻此。你就不會認(rèn)為Android studio是在執(zhí)行黑魔法轮纫。

現(xiàn)在腔寡,下載Gradle,啟動它吧掌唾。

環(huán)境變量設(shè)置

\bin文件夾包含了gradle批處理文件(unix和windows)放前,你將用它運(yùn)行命令。

做接下來幾件事:
1.創(chuàng)建系統(tǒng)環(huán)境變量GRADLE_HOME將它指向Gradle安裝文件夾糯彬,在我的機(jī)器上是e:\gradle-2.2.1凭语,因此我創(chuàng)建了GRADLE_HOME并將它的值指定為e:\gradle-2.2.1
2.添加%GRADLE_HOME%\binPATH環(huán)境變量中撩扒。這將允許你在任何文件夾啟動gradle命令似扔。

驗(yàn)證是否安裝成功

為了驗(yàn)證是否安裝成功,打開終端搓谆,輸入如下命令:

gradle -v

這將會顯示gradle版本信息:

------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------

Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision: 6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a

Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_40 (Oracle Corporation 24.0-b56)
OS: Windows 7 6.1 amd64

如果你沒看到這些信息炒辉,檢查你的安裝,確保設(shè)置了環(huán)境變量泉手。

A word about Groovy

任何缺少Groovy關(guān)于Gradle的討論都是不完整的黔寇。Groovy是最受歡迎的運(yùn)行于JVM上的語言。

Gradle有以下幾個(gè)優(yōu)點(diǎn):
*代碼簡潔
*靈活
*使你能按你所想的配置
Groovy在其中扮演了重要的角色斩萌。不像在ant和Maven中使用的xml缝裤,Groovy是高級語言屏轰。所有高級語言有的特性,比如子句Groovy都支持憋飞。你希望Gradle運(yùn)行的build文件確實(shí)是可以運(yùn)行的代碼霎苗。

一個(gè)問題是‘我需要學(xué)習(xí)Groovy嗎?’我認(rèn)為沒必要榛做,除非你不使用約定而是按你自己的方式做事情叨粘,這樣你需要了解Groovy,因?yàn)檫@是Gradle靈活的來源瘤睹。一般情況下升敲,你只使用接下來將會看到的build.gradle模板,盡管它包含Groovy語法轰传,但你不需要完全明白細(xì)節(jié)驴党。

所以,盡管不需要你很好的掌握Groovy才能理解Gradle获茬,但它幫助你更好的了解Groovy的威力港庄。

基本的命令

現(xiàn)在我們還沒有寫任何源代碼或gradle文件,我們接下來會這么做恕曲。我們嘗試接下來的幾個(gè)命令:

gradle -q help

這個(gè)命令打印基本的幫助信息鹏氧。-q參數(shù)指定為靜默模式,當(dāng)有很多無效信息輸出時(shí)佩谣,這很有效把还。

gradle -q tasks

這條命令列出了你可以使用的命令。

gradle properties

這條命令列出了許多預(yù)定義的屬性茸俭。你可以修改修改這些屬性在你的build文件中吊履。

我們不準(zhǔn)備編譯java工程,這是下一篇做的事调鬓。我們現(xiàn)在理解Groovy給Gradle帶來的威力艇炎。

開始之前,我們先講講build.gradle文件腾窝。這是標(biāo)準(zhǔn)的build文件名缀踪。所有你希望執(zhí)行的指令都放在這里。這個(gè)系列的教程虹脯,我們會在build.gradle文件上創(chuàng)建使用各種插件/任務(wù)驴娃,來幫我們編譯、構(gòu)建归形、測試托慨、運(yùn)行java應(yīng)用。

現(xiàn)在暇榴,我們做以下嘗試:
在一個(gè)文件夾厚棵,比如example1蕉世,創(chuàng)建build.gradle。
寫入如下內(nèi)容:

task compileTask << { 
    System.out.println "compiling..." 
}

現(xiàn)在在你創(chuàng)建該文件的目錄下打開終端婆硬,輸入如下命令:

gradle -q tasks

這條命令將會列出所有的你能執(zhí)行的任務(wù)狠轻,你會注意到除了標(biāo)準(zhǔn)的任務(wù),還有我們創(chuàng)建的任務(wù)compileTask

Other tasks
-----------
compileTask

這引出了我們的第一個(gè)概念我們的gradle構(gòu)建文件由一系列我們指定的任務(wù)構(gòu)成彬犯,gradle構(gòu)建系統(tǒng)為我們執(zhí)行這些任務(wù)向楼。目前我們指定的任務(wù)是compileTask,如你看到的Groovy代碼谐区,我們唯一做的是System.out.pritnln湖蜕。記住Groovy是高級語言。

現(xiàn)在宋列,我們怎么運(yùn)行compileTask呢昭抒?

在我們開始前,有一點(diǎn)要明白炼杖,當(dāng)我們執(zhí)行g(shù)radle命令時(shí)灭返,它會在當(dāng)前目錄中尋找build.gradle文件。如果找到就是用它坤邪。前面的例子中熙含,系統(tǒng)可以找到它,他決定了哪些任務(wù)可以被執(zhí)行艇纺。

如果我們只輸入gradle不帶任何參數(shù)怎静,也不指定任何任務(wù)會發(fā)生什么。我們試試看:

gradle

將會有如下輸出:

:help
Welcome to Gradle 2.2.1.
To run a build, run gradle <task> ...
To see a list of available tasks, run gradle tasks
To see a list of command-line options, run gradle --help
BUILD SUCCESSFUL
Total time: 2.39 secs

這很清楚的告訴你你需要指定任務(wù)名喂饥。比如gradle<task>消约。我們給出如下命令:

gradle -q compileTaks

將會有如下輸出:

compiling...

我們改進(jìn)下build.gradle文件增加另一個(gè)任務(wù)肠鲫,現(xiàn)在看起來像這樣:

task compileTask << {
 System.out.println "compiling..." 
}

task buildTask << {
 System.out.println "building..."
}

現(xiàn)在员帮,如果你給出如下命令:

gradle -q tasks

你會發(fā)現(xiàn)這兩個(gè)任務(wù)都會列在oterTasks下:

Other tasks
-----------
buildTask
compileTask

你可以運(yùn)行這些任務(wù)通過gradle compileTaskgradle buildTask

如果我們想去創(chuàng)建一個(gè)默認(rèn)的任務(wù)导饲,以便我們不需要顯式的指定任務(wù)名就可以執(zhí)行捞高。

為了達(dá)到這樣的效果,修改build.gradle文件如下:

defaultTasks 'buildTask'

task compileTask << {
  System.out.println "compiling..." 
}

task buildTask << {
  System.out.println "building..."
}

現(xiàn)在我們輸入gradle -q渣锦,將會輸出building...硝岗。

最后一部分需要注意的是任務(wù)間的依賴。如果我們想讓buildTask依賴compileTask袋毙。如果buildTask執(zhí)行型檀,那么compileTask也會執(zhí)行。

修改build.gradle文件如下:

defaultTasks 'buildTask'

task compileTask << {
  System.out.println "compiling..." 
}

task buildTask (dependsOn:compileTask) << {
  System.out.println "building..."
}

現(xiàn)在執(zhí)行g(shù)radle -q將會有如下顯示:

compiling...
building...

我們在這個(gè)章節(jié)所講的是非程牵基礎(chǔ)的Gradle知識胀溺。將build文件作為一系列待執(zhí)行的任務(wù)裂七。如果你是java開發(fā)者有構(gòu)建的經(jīng)歷,你會注意到這樣的事實(shí):要構(gòu)建任何東西仓坞,我們需要去做如下的事:編譯背零,構(gòu)建,運(yùn)行无埃,測試徙瓶,打包。這些在Gradle中都以任務(wù)存在嫉称。

我們不需要去手工寫所有的這些任務(wù)侦镇,盡管你可以這么去做,只要你愿意织阅。使用Gradle遵循的約定和插件(plugins)虽缕,我們可以執(zhí)行一系列步驟去構(gòu)建我們的工程。

現(xiàn)有的插件有如java plugin, WAR pluginn, AppEngine plugin, Android plugin等蒲稳,這些插件給出了預(yù)定義的任務(wù)氮趋。后面的章節(jié),我們將會看到更多江耀。

下一章

在下一章中剩胁,我們將使用gradle去編譯構(gòu)建java工程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祥国,一起剝皮案震驚了整個(gè)濱河市昵观,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舌稀,老刑警劉巖啊犬,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壁查,居然都是意外死亡觉至,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門睡腿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來语御,“玉大人,你說我怎么就攤上這事。” “怎么了护侮?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碉纺。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么骨田? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任唬涧,我火速辦了婚禮,結(jié)果婚禮上盛撑,老公的妹妹穿的比我還像新娘碎节。我一直安慰自己,他們只是感情好抵卫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布狮荔。 她就那樣靜靜地躺著,像睡著了一般介粘。 火紅的嫁衣襯著肌膚如雪殖氏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天姻采,我揣著相機(jī)與錄音雅采,去河邊找鬼。 笑死慨亲,一個(gè)胖子當(dāng)著我的面吹牛婚瓜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刑棵,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼巴刻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蛉签?” 一聲冷哼從身側(cè)響起胡陪,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碍舍,沒想到半個(gè)月后柠座,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡片橡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年妈经,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锻全。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡狂塘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鳄厌,到底是詐尸還是另有隱情,我是刑警寧澤妈踊,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布了嚎,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏歪泳。R本人自食惡果不足惜萝勤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呐伞。 院中可真熱鬧敌卓,春花似錦、人聲如沸伶氢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽癣防。三九已至蜗巧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蕾盯,已是汗流浹背幕屹。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留级遭,地道東北人望拖。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像挫鸽,于是被迫代替她去往敵國和親靠娱。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理掠兄,服務(wù)發(fā)現(xiàn)像云,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,808評論 6 342
  • 原文鏈接:http://www.woaitqs.cc/gradle/2016/12/20/android-grad...
    _qisen閱讀 901評論 0 10
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng),請點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,131評論 8 72
  • 這篇文章講給大家?guī)韌radle打包系列中的高級用法-自己動手編寫gradle插件婿牍。我們平常在做安卓開發(fā)時(shí)侈贷,都會在...
    呆萌狗和求疵喵閱讀 15,985評論 22 80