本文同步發表在 http://www.simonme.org/?p=201
一、介紹
1. Gradle 是什么 Gradle 官方對其描述是:能自動構建、測試、部署、打包、生成靜態頁面,生成文檔等等。Gradle整合了Ant對依賴管理的強大能力、靈活和maven的約定的優於配置的特性形成了一種更有效的構建方式。Gradle基於Groovy的領域定義語言,充滿了創新。Gradle已經成為很多開源項目的編譯系統的選擇。
2. Gradle的特性 詳細的參見其文檔。
a. 通過聲明來構建和通過約定來構建。
b. 基於編程來描述語言依賴。
c. 構建描述結構化。(使得你的構建代碼更優雅,更清晰,更易復用)。
d. Deep API(提供很多hooks,允許你在構建的任何環節做監控和定制配置。)。
e. Gradle scales. f. 多工程構建。
g. 多種方式管理你的依賴(可以和maven和ivy倉庫直接對接)...
二、Eclipse 安裝Gradle插件(強烈建議全程fan/qiang)
1. 訪問 http://dist.springsource.com/release/TOOLS/composite/e3.7/bookmarks.xml (可能要fan/qiang. 還有這個網址中的3.7是個變量,根據你的eclipse版本來確定。)。將這個xml文件保存到到本地.
2.然后按下圖操作。 步驟5是 http://dist.springsource.com/release/TOOLS/gradle

然后一路next。
3. 安裝后的配置 安裝完以后, 是可以喝maven的插件一樣,可以指定gradle裝在哪里,還是使用插件自帶的gradle warpper。看你自己需要。我用的默認自帶的。(maven是建議指向自己安裝的)
三、Gradle構建腳本基礎
1. 基礎安裝 a. 需要JDK1.5+。具體步驟即是下載zip包,解壓即可用。根據需要決定是否設置GRADLE_HOME環境變量和GRADLE_HOME/bin 目錄是否加入系統PATH。 b. JVM參數配置。對於Gradle來說,配置JVM參數,可以通過GRADLE_OPTS和JAVA_OPTS來配置,諸如HTTP Proxy。也可以在gradle腳本的開頭處設置。
2. Eclipse的gradle插件使用 若在不聯網的情況下,用eclipse的gradle的插件創建gradle工程會失敗。 錯誤信息如下: java.net.UnknownHostException: services.gradle.org at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Sourc
3. Gradle腳本基礎
a. Everything in Gradle sits on top of two basic concepts: projects and tasks. Every Gradle build is made up of one or more projects. gradle中有兩個重要概念,project和task。每一個gradle構建腳本都有多個project構成。一個project代表着你要構建的軟件的一些部件。諸你要構建的要依賴外部什么。一個project可能代表一個jar lib,或者是一個web app。一個project也可能代表一個由多個工程build出來的多個jar包組裝好的zip包。一個project並不一定代表要構建,也或許是去做一些事情,比如將你的應用發布到演示或者生產環境上。
b. 每一個project也是由多個task構成的。一個task代表一些原子的構建執行的工作片段。比如編譯classes,創建jar,生成javadoc,發布一些壓縮包到倉庫。
下面就會涉及到Groovy的語法 具體的可以參見本博客另外一篇文章: Groovy簡明學習
c. Hello World 創建一個build.gradle,寫上如下代碼:
task hello { doLast { println 'Hello World!' } }
gradle的 -b選項 表示指定編譯腳本文件. 上面的腳本略作解釋,定義了一個hello task,然后執行之。這個task等同於ant的target,但是gradle的task具有更強大的特性。
d. 更快捷的任務定義。
task hello << { println 'Hello world!' }
e. 字符串方法使用
task upper << { String someString = 'mY_nAmE' println "Original: " + someString println "Upper case: " + someString.toUpperCase() }
f. 迭代次數 task count << { 4.times { print "$it " } }
g. 任務依賴 task hello << { println 'Hello world!' } task intro(dependsOn: hello) << { println "I'm Gradle" }
h. 動態任務 4.times { counter -> task "task$counter" << { println "I'm task number $counter" } }
未完,待寫
i. 操作已經存在的任務

