在這個教程中,咱們將注意力集中在Gradle的啓動上。儘管Android Studio內置了Gradle,咱們如今的目標是理解Gradle的安裝,啓動,執行基本的Gradle命令。java
在咱們開始前,若是你想知道爲何Gradle是構建工具很好的選擇,我建議你閱讀這篇文章article。儘管須要基礎才能閱讀它,這篇文章將開拓你的視野爲何開發者如此擁簇Gradle.windows
接下來幾部分將會帶你安裝Gradle。Gradle須要java環境,我假設你是java開發者,已經安裝了java sdk在你的機器上。jvm
目前爲止,Gradle最新版是2.2.1能夠在這裏獲取。工具
下載zip文件到你機器上。你會發現它的文件名爲gradle-2.2.2-all.zip。將它解壓縮。學習
在個人機器上,我將它解壓到e:\gradle-2.2.1,因此我將看到以下的子文件夾:
測試
你可能會問爲何你須要單獨安裝Gradle。若是你已經安裝了Android Studio你將會注意到這點。正如所知的,Android Studio內置了Gradle,不必再次安裝Gradle。gradle
後面的教程中咱們將會討論Android Studio,使用它內置的Gradle。這章和接下來的幾章咱們會從咱們本身安裝的Gradle開始,運行命令行,近距離得接觸它,以便理解他到底作了什麼。後面,當Android Studio作這些事的時候,咱們將更好的理解發生了什麼。你就不會認爲Android studio是在執行黑魔法。ui
如今,下載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
若是你沒看到這些信息,檢查你的安裝,確保設置了環境變量。
任何缺乏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
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工程。