原文地址: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,所以我將看到如下的子文件夾:
![圖片](https://iromin.files.wordpress.com/2014/07/gradle-2-2-1.png)
你可能會問為什么你需要單獨(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%\bin到PATH環(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 compileTask 或 gradle 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工程。