每一個Gradle構建都是以一個腳本開始的。Gradle構建腳本默認名字是 build.gradle。當在shell中執行gradle命令時,Gradle會去尋找名字是build.gradle的文件。若是找不到,就會顯示一個幫助信息。java
讓咱們在Gradle中實現經典的「Hello world!」例子。首先,你須要建立一個名字爲build.gradle的文件。在文件中,定義一個獨立的原子性工做。在Gradle的詞彙中,叫做task(任務)。在這個例子中,task叫helloWorld。要打印信息「Hello World!」,須要使用Gradle的通用語言Groovy,將println命令添加到task的action(動做)doLast中。Groovy中的Println方法更簡短,它至關於Java中的System.out.println方法。shell
task hellWorld{ doLast{ println 'Hello world!' } }
運行該task:gradle
$ gradle -q helloWorld
經過 -q 定義可選命令行選項quiet,告訴Gradle只輸出該task相關的信息。ui
在徹底不須要了解Gradle的狀況下,你已經開始使用Gradle的DSL了。task和action是這門語言重要的元素。名字爲doLast的action幾乎自表達了它的含義。它是task執行的最後一個action。Gradle還容許使用一種更精簡的方式來指定相同的邏輯。使用左移符號 << 來簡單地表明doLast。如:spa
task helloWorld << { println 'Hello world!' }
咱們來看一個更高級的示例:命令行
task startSession << { chant() } def chant(){ ant.echo(message: 'Repeat after me ...') //1 } 3.times{ task "yayGradle$it" << { //2 println 'gradle rocks' } } yayGradle0.dependsOn startSession yayGradle2.dependsOn yayGradle1, yayGradle0 //3 task groupTherapy(dependsOn: yayGradle2)
一開始你可能沒有注意到,這個清單中隱藏了不少高級特性。代碼中引入了關鍵字dependsOn來講明task之間的依賴(3處)。Gradle會確保被依賴的task總會在定義該依賴的task以前執行。實際上,dependsOn是task的一個方法。這個後面再詳細講。code
咱們以前談到的一個特性是Gradle和Ant有很好的集成(1處)。由於擁有對Groovy語言特性的徹底訪問權,你還可使用chant()方法來打印消息。這個方法能夠很是方便地在task中調用。每一個腳本都帶有一個ant屬性,它賦予了直接訪問ant任務的能力。在這個例子中,你可使用Ant的任務echo打印出「Repeat after me」信息。it
Gradle提供的一個漂亮的特性是定義動態task,這意味着能夠在運行時指定它們的名字。你的腳本在循環(2處)中使用Groovy在java.lang.Number中擴展的times方法建立3個新的task。Groovy自動地暴露一個隱式變量 it 來指定循環迭代的次數。你使用這個計數器來構建task的名字。對於第一輪迭代,task能夠叫做yayGradle0,而後 yayGradle1,yayGradle2。io
如今運行:ast
$ gradle groupTherapy
注:你也許已經注意到例子中省去了quiet命令行選項,這表示運行該task時,會獲得更多的信息。