原文地址:http://rominirani.com/2014/07/28/gradle-tutorial-part-1-installation-setup/
在這個教程中,我們將注意力集中在Gradle的啟動上。盡管Android Studio內置了Gradle,我們現在的目標是理解Gradle的安裝,啟動,執行基本的Gradle命令。
在我們開始前,如果你想知道為什么Gradle是構建工具很好的選擇,我建議你閱讀這篇文章article。盡管需要基礎才能閱讀它,這篇文章將開拓你的視野為什么開發者如此擁簇Gradle.
接下來幾部分將會帶你安裝Gradle。Gradle需要java環境,我假設你是java開發者,已經安裝了java sdk在你的機器上。
下載 Gradle
下載zip文件到你機器上。你會發現它的文件名為gradle-2.2.2-all.zip。將它解壓縮。
在我的機器上,我將它解壓到e:\gradle-2.2.1,所以我將看到如下的子文件夾:

你可能會問為什么你需要單獨安裝Gradle。如果你已經安裝了Android Studio你將會注意到這點。正如所知的,Android Studio內置了Gradle,沒必要再次安裝Gradle。
后面的教程中我們將會討論Android Studio,使用它內置的Gradle。這章和接下來的幾章我們會從我們自己安裝的Gradle開始,運行命令行,近距離得接觸它,以便理解他到底做了什么。后面,當Android Studio做這些事的時候,我們將更好的理解發生了什么。你就不會認為Android studio是在執行黑魔法。
現在,下載Gradle,啟動它吧。
環境變量設置
\bin文件夾包含了gradle批處理文件(unix和windows),你將用它運行命令。
做接下來幾件事:
1.創建系統環境變量GRADLE_HOME將它指向Gradle安裝文件夾,在我的機器上是e:\gradle-2.2.1,因此我創建了GRADLE_HOME并將它的值指定為e:\gradle-2.2.1。
2.添加%GRADLE_HOME%\bin到PATH環境變量中。這將允許你在任何文件夾啟動gradle命令。
驗證是否安裝成功
為了驗證是否安裝成功,打開終端,輸入如下命令:
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
如果你沒看到這些信息,檢查你的安裝,確保設置了環境變量。
A word about Groovy
任何缺少Groovy關于Gradle的討論都是不完整的。Groovy是最受歡迎的運行于JVM上的語言。
Gradle有以下幾個優點:
*代碼簡潔
*靈活
*使你能按你所想的配置
Groovy在其中扮演了重要的角色。不像在ant和Maven中使用的xml,Groovy是高級語言。所有高級語言有的特性,比如子句Groovy都支持。你希望Gradle運行的build文件確實是可以運行的代碼。
一個問題是‘我需要學習Groovy嗎?’我認為沒必要,除非你不使用約定而是按你自己的方式做事情,這樣你需要了解Groovy,因為這是Gradle靈活的來源。一般情況下,你只使用接下來將會看到的build.gradle模板,盡管它包含Groovy語法,但你不需要完全明白細節。
所以,盡管不需要你很好的掌握Groovy才能理解Gradle,但它幫助你更好的了解Groovy的威力。
基本的命令
現在我們還沒有寫任何源代碼或gradle文件,我們接下來會這么做。我們嘗試接下來的幾個命令:
gradle -q help
這個命令打印基本的幫助信息。-q參數指定為靜默模式,當有很多無效信息輸出時,這很有效。
gradle -q tasks
這條命令列出了你可以使用的命令。
gradle properties
這條命令列出了許多預定義的屬性。你可以修改修改這些屬性在你的build文件中。
我們不準備編譯java工程,這是下一篇做的事。我們現在理解Groovy給Gradle帶來的威力。
開始之前,我們先講講build.gradle文件。這是標準的build文件名。所有你希望執行的指令都放在這里。這個系列的教程,我們會在build.gradle文件上創建使用各種插件/任務,來幫我們編譯、構建、測試、運行java應用。
現在,我們做以下嘗試:
在一個文件夾,比如example1,創建build.gradle。
寫入如下內容:
task compileTask << {
System.out.println "compiling..."
}
現在在你創建該文件的目錄下打開終端,輸入如下命令:
gradle -q tasks
這條命令將會列出所有的你能執行的任務,你會注意到除了標準的任務,還有我們創建的任務compileTask
Other tasks
-----------
compileTask
這引出了我們的第一個概念我們的gradle構建文件由一系列我們指定的任務構成,gradle構建系統為我們執行這些任務。目前我們指定的任務是compileTask,如你看到的Groovy代碼,我們唯一做的是System.out.pritnln。記住Groovy是高級語言。
現在,我們怎么運行compileTask呢?
在我們開始前,有一點要明白,當我們執行gradle命令時,它會在當前目錄中尋找build.gradle文件。如果找到就是用它。前面的例子中,系統可以找到它,他決定了哪些任務可以被執行。
如果我們只輸入gradle不帶任何參數,也不指定任何任務會發生什么。我們試試看:
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
這很清楚的告訴你你需要指定任務名。比如gradle<task>。我們給出如下命令:
gradle -q compileTaks
將會有如下輸出:
compiling...
我們改進下build.gradle文件增加另一個任務,現在看起來像這樣:
task compileTask << {
System.out.println "compiling..."
}
task buildTask << {
System.out.println "building..."
}
現在,如果你給出如下命令:
gradle -q tasks
你會發現這兩個任務都會列在oterTasks下:
Other tasks
-----------
buildTask
compileTask
你可以運行這些任務通過gradle compileTask 或 gradle buildTask。
如果我們想去創建一個默認的任務,以便我們不需要顯式的指定任務名就可以執行。
為了達到這樣的效果,修改build.gradle文件如下:
defaultTasks 'buildTask'
task compileTask << {
System.out.println "compiling..."
}
task buildTask << {
System.out.println "building..."
}
現在我們輸入gradle -q,將會輸出building...。
最后一部分需要注意的是任務間的依賴。如果我們想讓buildTask依賴compileTask。如果buildTask執行,那么compileTask也會執行。
修改build.gradle文件如下:
defaultTasks 'buildTask'
task compileTask << {
System.out.println "compiling..."
}
task buildTask (dependsOn:compileTask) << {
System.out.println "building..."
}
現在執行gradle -q將會有如下顯示:
compiling...
building...
我們在這個章節所講的是非常基礎的Gradle知識。將build文件作為一系列待執行的任務。如果你是java開發者有構建的經歷,你會注意到這樣的事實:要構建任何東西,我們需要去做如下的事:編譯,構建,運行,測試,打包。這些在Gradle中都以任務存在。
我們不需要去手工寫所有的這些任務,盡管你可以這么去做,只要你愿意。使用Gradle遵循的約定和插件(plugins),我們可以執行一系列步驟去構建我們的工程。
現有的插件有如java plugin, WAR pluginn, AppEngine plugin, Android plugin等,這些插件給出了預定義的任務。后面的章節,我們將會看到更多。
下一章
在下一章中,我們將使用gradle去編譯構建java工程。