安裝步驟
第一步:
從網(wǎng)站上下載 Gradle
第二部:
部署環(huán)境變量


檢查是否安裝成功:
gradle -v

由上圖我們可以看到gradle對(duì)應(yīng)的版本信息,至此環(huán)境搭建已經(jīng)完成。
Gradle的語(yǔ)法
簡(jiǎn)介
Gradle構(gòu)建腳本文件用來(lái)處理兩件事情:一個(gè)是項(xiàng)目和另一個(gè)的任務(wù)。每個(gè)Gradle
生成表示一個(gè)或多個(gè)項(xiàng)目。一個(gè)項(xiàng)目表示一個(gè)JAR庫(kù)或Web應(yīng)用程序,也可能表示由其他項(xiàng)目產(chǎn)生的JAR文件組裝的ZIP。 簡(jiǎn)單地說(shuō),一個(gè)項(xiàng)目是由不同的任務(wù)組成。一個(gè)任務(wù)是指構(gòu)建執(zhí)行的一塊工作。任務(wù)可能是編譯一些類,創(chuàng)建一個(gè)JAR,產(chǎn)生的Javadoc或發(fā)布一些歸檔文件庫(kù)。Gradle是一個(gè)基于Apache Ant和Apache Maven概念的項(xiàng)目自動(dòng)化建構(gòu)工具。它使用一種基于Groovy的特定領(lǐng)域語(yǔ)言(DSL)來(lái)聲明項(xiàng)目設(shè)置,拋棄了基于XML的各種繁瑣配置。 面向Java應(yīng)用為主。當(dāng)前其支持的語(yǔ)言限于Java、Groovy和Scala,計(jì)劃未來(lái)將支持更多的語(yǔ)言。
編寫(xiě)構(gòu)建腳本
Gradle提供了一個(gè)域特定語(yǔ)言(DSL),用于描述構(gòu)建。 它使用 Groovy 語(yǔ)言,使其更容易來(lái)形容和構(gòu)建。Gradle 中的每一個(gè)構(gòu)建腳本使用UTF-8進(jìn)行編碼保存,并命名為 build.gradle 。
創(chuàng)建對(duì)應(yīng)的build.gradle文件,并且編寫(xiě)對(duì)應(yīng)的helloword任務(wù)
task helloworld << {
println 'holle world !'
}
在dos環(huán)境下執(zhí)行命令:
gradle -q helloworld

由此我們可以得到執(zhí)行g(shù)radle腳本的命令語(yǔ)法:
gradle -q <taskName>
gradle如何使用groovy API
首先,我們看一個(gè)將字符串轉(zhuǎn)化成大寫(xiě)的API方法:
task uper << {
String inputStr = "hello world !"
println "初始化字符串的值:"+inputStr
println "轉(zhuǎn)化成大寫(xiě)之后的字符串的值:"+inputStr.toUpperCase()
}
執(zhí)行任務(wù):
gradle -q uper
結(jié)果:

隱式參數(shù) $it 的使用:
task count << {
4.times{
print "$it"
}
println ''
}
time類似于迭代器,而$it表示迭代項(xiàng)。
執(zhí)行上面的任務(wù):
gradle -q count
上面代碼中$it引用必須使用雙引號(hào)擴(kuò)起來(lái),否則會(huì)當(dāng)做字符串打印傳來(lái),如下所示:

使用雙引號(hào)正常輸出:

groovy 的jdk方法
- each()方法
task groovyJdkMethod{
String myName = 'lenyan_zhao'
myName.each(){
println "$it"
}
}
執(zhí)行任務(wù):
gradle -q groovyJdkMethod
結(jié)果:

由此看出each方法迭代器方式實(shí)現(xiàn)字符串字符的迭代處理。
Task依賴
多個(gè)任務(wù)之間存在依賴關(guān)系,同設(shè)置參數(shù)dependsOn:<taskName>來(lái)指定當(dāng)前任務(wù)的依賴任務(wù):
//任務(wù)的依賴
task info (dependsOn:helloworld)<<{
println 'lenyan_zhao'
}
info任務(wù)依賴于helloworld任務(wù),看執(zhí)行結(jié)果:

由結(jié)果可知,依賴關(guān)系先執(zhí)行被依賴項(xiàng),后執(zhí)行當(dāng)前任務(wù),當(dāng)然這是比較正常的一種依賴關(guān)系,還有其他非正常的依賴關(guān)系,可以參考另一篇文章Gradle項(xiàng)目構(gòu)建工具--快捷方式doLast以及亂碼問(wèn)題;
Task屬性
- 以任務(wù)名稱作為屬性查看任務(wù)名稱
task hello
println hello.name
println project.hello.name
執(zhí)行結(jié)果:

- 以任務(wù)集合的方式查看任務(wù)的名稱
task hello
println hello.name
println project.hello.name
println tasks["hello"].name
println project.tasks["hello"].name

添加依賴關(guān)系
要將一個(gè)任務(wù)依賴于另一個(gè)任務(wù),這意味著當(dāng)一個(gè)任務(wù)完成時(shí),另一個(gè)任務(wù)將開(kāi)始。 每個(gè)任務(wù)都使用任務(wù)名稱進(jìn)行區(qū)分。 任務(wù)名稱集合由其任務(wù)集合引用。 要引用另一個(gè)項(xiàng)目中的任務(wù),應(yīng)該使用項(xiàng)目路徑作為相應(yīng)任務(wù)名稱的前綴。
- 靜態(tài)依賴關(guān)系
task t1 << {
println 't1'
}
task t2(dependsOn:'t1') << {
println 't2'
}
gradle -q t2
執(zhí)行結(jié)果:

- 動(dòng)態(tài)添加依賴關(guān)系
task t3 << {
println 't3'
}
task t4 << {
println 't4'
}
t4.dependsOn t3
執(zhí)行結(jié)果:

- 閉包方式批量添加依賴
這種方式可以通過(guò)模糊匹配任務(wù)名稱的方式進(jìn)行批量添加對(duì)應(yīng)的依賴任務(wù):
//閉包批量添加依賴
task t5 << {
println 't5'
}
t5.dependsOn{
tasks.findAll{
//模糊匹配前綴是以lib開(kāi)頭的任務(wù)
task -> task.name.startsWith('lib')
}
}
task lib1 << {
println 'lib1'
}
task lib2 << {
println 'lib2'
}
task lib3 << {
println 'lib3'
}
task lib4 << {
println 'lib4'
}
執(zhí)行任務(wù)t5,執(zhí)行結(jié)果:

添加任務(wù)屬性
//添加任務(wù)屬性
task copy(type:Copy){
println 'start copy .'
description "Copies the resource directory to the target directory."
from "resources"
into "target"
include ('**/*.txt','**/*.xml','**/*.properties')
println "description applied"
}
description : 表示任務(wù)的描述屬性
from : 資源文件的來(lái)源屬性
into : 資源文件復(fù)制到目標(biāo)文件夾配置屬性
include : 配置復(fù)制文件的類型
執(zhí)行結(jié)果:

注:此處代碼如果任務(wù)添加快捷方式,執(zhí)行任務(wù)時(shí),不會(huì)輸出任何信息
跳過(guò)任務(wù)
如果用于跳過(guò)任務(wù)的邏輯不能用謂詞表示,則可以使用StopExecutionException。 如果操作拋出此異常,則會(huì)跳過(guò)此操作的進(jìn)一步執(zhí)行以及此任務(wù)的任何后續(xù)操作的執(zhí)行。 構(gòu)建繼續(xù)執(zhí)行下一個(gè)任務(wù)。
//跳過(guò)任務(wù)
task complie << {
println 'We are doing the complie'
}
complie.doFirst{
if(true){
throw new StopExecutionException()
}
}
task myTask(dependsOn:'complie') << {
println 'I\'m not affected'
}
執(zhí)行結(jié)果:

本篇文章只是簡(jiǎn)單的介紹了Gradle基本操作語(yǔ)法以及window環(huán)境搭建流程,后續(xù)將會(huì)慢慢跟進(jìn)對(duì)應(yīng)的其他內(nèi)容。