原文地址:http://rominirani.com/2014/07/28/gradle-tutorial-part-1-installation-setup/java
在這篇教程裏,咱們將主要講解如何在咱們本身的系統上安裝、配置、原始版本的Gradle,並學習一些基本的Gradle命令行!Android Studio 自己集成了一個內部版本的Gradle,在安裝Android Studio的時候,就自動給安裝上了,這對於咱們這樣的小白對Gradle的理解沒有幫助意義,因此咱們單獨將Gradle原始版本安裝並配置獨立出來便於咱們的理解Android Studio裏面的Gradle。android
在開始以前,若是你想知道爲何Gradle對於編譯來講是一個好工具,我建議你讀一下這篇文章,雖然你不讀也能讀懂下面的內容,可是讀一下或許能幫助打開你的思想,讓你理解爲何不少公司和開發人員都在研究並應用Gradle!編程
下面的系列步驟將教你如何在你本身的電腦上配置Gradle!Gradle須要JDK,因此我假設你就是一個java開發者,並知道如何在你電腦上安裝 JAVA JDK!windows
在寫做的時候,Gradle 已經發布到2.0,能夠在這裏下載。閉包
先下載那個gradle-2.0-all.zip文件到你的電腦上,並解壓,我將其解壓到個人電腦的D:\Program Files\gradle-2.0-all。解壓後有這些文件app
你可能會問:爲何要安裝一個原始版本的Gradle?Android Studio 自己只是簡單的集成Gradle,當你使用Android Studio 在建立APP的時候,Android Studio 會調用Gradle的命令來作一些事情,而Android Studio 是如何在作這些事情的呢?若是你安裝這個單獨版本的Gradle,並使用其命令行來完成,你就很容易的知道Android Studio 在如何作了,不然的話,你會誤覺得Android Studio如何使用Gradle就是在玩魔術。jvm
\bin 文件夾包含了gradle腳本文件(unix和windows 都有),若是你要使用這個腳本,你就須要以下步驟:編程語言
1. 建立一個環境變量 GRADLE_HOME,並指向你的Grdle的安裝路徑,在個人電腦,這樣添加:編輯器
2. 添加 %GRADLE_HOME%\bin 到你的PATH 環境變量,這樣你就能夠在CMD中任意使用gradle命令行了!工具
爲了檢查剛纔所設置的變量是否成功,你打開CMD,並執行以下命令:
gradle –v
若是配置成功就會有以下結果:
若是你沒有看到這樣的內容,那就檢查一下路徑是否正確。
只要有Gradle就應該有Groovy,離開Groovy討論Gradle是不完整的!Groovy是一個在JVM上很是流行而且強大的語言。
Gradle使用最受歡迎的特色有:
簡潔
靈活
能夠照你想象的方式自由配置
Groovy在實現上面的這些特性時扮演了很是重要的角色,基本就是Groovy提供這些功能的實現。Ant與Maven在編譯時使用XML文件,而Groovy語言比XML文件要靈活強大不少,由於它不只讓文件在內容上看起來更加簡潔,而且它提供修改或者制定標籤的強大的可編程能力,也支持閉包等最新編程語言才具備的高級特性,而且能夠實時編譯!
那麼問題就來了,你可能就會問:我須要去學習Groovy嗎?
我試着回答你,不須要!除非你真的須要不按照約定去作一些你本身須要的需求,那麼你可能就須要去學習Groovy,由於Gradle的彈性與靈活性就表如今這裏,你能夠照你想的方式來作一切。可是對於大多數狀況,你只須要使用各類build.gradle模板(包含了 Groovy DSL),根本就不須要學習Groovy!
因此,要理解Gradle不須要你去好好的學習Groovy,固然若是你想理解Groovy的所有強大功能,你也能夠本身去學習。這確定會是有好處的!
Groovy在默認安裝Gradle的時候,就已經安裝了一個內部版本了,因此你不須要再去下一個獨立版本的Groovy!
咱們尚未寫任何源代碼或者編譯文件(Gradle),因此一會咱們就來寫。如今先來試試下面這個命令行:
gradle -q help
這個命令用來展現Gradle的幫助信息
-q:用來表示dos窗口中退出信息 ,這個命令在你只須要看一些輸出的時候很是有用
gradle –q tesks
這個展現一個你當前可使用的任務列表
gradle properties
這個將展現一個屬性列表,這些屬性gradle已經預約配置好的,你也能夠修改大多數的實行在你本身的編譯文件裏。這些屬性給你一個暗示:Gradle在執行你的任務以前爲你的項目配置會作一大堆很是繁重的工做!
咱們尚未編譯本身的JAVA項目,這個會在之後的系列來作,咱們先要理解Groovy是如何給Gradle提供了那一整套強大的編程能力!
咱們先討論一下build.gradle文件。這個標準的文件名就是咱們本身的編譯文件。這個文件包含了全部你須要Gradle去執行的命令。在完成了整個教程系列以後,咱們就可以很是有效的去使用這個文件去建立或者使用各類順序的插件、任務來完成咱們本身的編譯、測試、運行java程序的工做!
如今,你來跟着我作:
選擇一個文件夾,在裏面建立一個文件build.gradle
用記事本或者其餘編輯器,將下面的內容添加的build.gradle文件裏
task compileTask << {
System.out.println 「compiling…」
}
如今打開CMD,並定位到你所建立的文件夾(使用 cd命令,你應該會吧),執行下面的代碼
gradle –q tasks
這個就會輸出一個可用的各類任務(tasks)列表,而且你會注意到在輸出部分,與標準任務分開的,會有一個咱們本身的建立的那個任務 compileTask:
咱們的編譯文件(build.gradle)就是一些列的任務(task)的組合,這裏就帶出了第一個的概念任務(task),任務指定了gradle編譯系統要爲咱們執行的代碼。
當前咱們所指定的項目被稱做compileTask,就如你所看到的,咱們使用了Groovy代碼來定義這個任務,這個任務所要作的事情,就是簡單的執行一個 System.out.println。怎麼樣,如今能體會Groovy是如何強大了吧!
如今,咱們要如何使用命令執行這個compileTask呢?
在作這個以前,咱們還有一個知識點須要理解。當咱們執行一個 gradle命令時,gradle編譯系統就會在當前目錄尋找文件名爲build.gradle的文件。若是找到了,就使用這個文件。在咱們上面的例子中,gradle編譯系統找到了這個文件,因此gradle編譯系統就將決定這個文件裏是什麼樣的任務,並將其任務加到gradle編譯系統的可執行任務裏表裏面去。
那麼,咱們執行即不帶任何參數的gradle的命令,也不指定任何要被執行的任務時,會發生什麼呢?如今試試,執行吧:
gradle
你應該會看到以下的輸出:
這個輸出很明顯的告訴你,當你執行gradle的時候,你須要指定一個任務名。好比:gradle <task>。那麼就讓咱們就試試使用咱們本身的任務會是什麼效果:
gradle –q compileTask
就有一個輸出消息
如今讓咱們增長build.gradle文件一些其餘的任務,好比:
task compileTask << {
System.out.println 「compiling…」
}
task buildTask <<{
System.out.println 「building…」
}
如今執行下面的命令:
gradle –q tasks
你應該會看到兩個列表都在otherTasks裏面:
如今你就能夠執行
gradle compileTask
或者
gradle buildTask
那麼若是咱們想建立一個默認被執行的任務,可讓我不須要制定任務名要如何作呢?
要作到上面的需求,修改build.gradle文件
defaultTasks 'buildTask'
task complieTask << {
System.out.println "compling..."
}
task buildTask <<{
System.out.println "building..."
}
如今,若是咱們簡單的執行gradle -q,就會有以下輸出:
最後一部分要討論的,就是任務之間的相互依賴。這個問題是這樣的狀況:若是buildTask執行了,那麼compileTask必定要在buildTask以前執行,這樣就是說buildTask依賴於compileTask。要如此作,咱們須要修改build.gradle文件以下:
defaultTasks 'buildTask'
task compileTask << {
System.out.println "compling..."
}
task buildTask(dependsOn:compileTask) <<{
System.out.println "building..."
}
你再次執行gradle -q,就應該有以下輸出:
咱們這篇文章裏所討論的gradle只有一些很是基本的功能。把你的編譯文件想象成一些列的須要被執行的任務。若是你是一個java程序猿,而且對編譯處理有一些經驗(ant,Maven),那麼你應該知道,要編譯任務東西,咱們都要作編譯,構建,跑測試用例,打包等等等等,可是在Gradle裏面統統沒有這些了,只有各類任務。
經過使用的Gradle規定的約定和插件程序,咱們並不須要手動去寫任何任務。就可以本身定義一些列的步驟來構建文明之間的項目!
目前有的一些插件程序有 java plugin ,war plugin,appengine plugin, android plugin等等,那些已經定義一些列你可使用的任務,咱們也將在接下來的課程裏看到更多!保持進步哦……