你把你的Web應(yīng)用給你的同伴Mike看,他看完之后覺得很有意思想加入你給項(xiàng)目添加一些高級(jí)特性。你把代碼添加到版本控制系統(tǒng)當(dāng)中(VCS),因此它可以下載代碼,由于Mike從來沒有用過Gradle構(gòu)建工具,所以他問你用的哪個(gè)版本的Gradle以及怎么安裝Gradle,他也不知道怎么去配置Gradle,從以往的經(jīng)驗(yàn)來看,Mike清醒的知道不同版本的構(gòu)建工具或者運(yùn)行環(huán)境對(duì)對(duì)構(gòu)建的影響有多大。對(duì)于在一個(gè)機(jī)器上可以運(yùn)行,另一個(gè)機(jī)器無法運(yùn)行的情況他看的太多了,經(jīng)常是由于運(yùn)行時(shí)環(huán)境不兼容的原因。
對(duì)于這個(gè)問題Gradle提供了一個(gè)非常方便和實(shí)用的方法:Gradle包裝器,包裝器是Gradle的一個(gè)核心特性,它允許你的機(jī)器不需要安裝運(yùn)行時(shí)就能運(yùn)行Gradle腳本,而且她還能確保build腳本運(yùn)行在指定版本的Gradle。它會(huì)從中央倉(cāng)庫(kù)中自動(dòng)下載Gradle運(yùn)行時(shí),解壓到你的文件系統(tǒng),然后用來build。終極目標(biāo)就是創(chuàng)建可靠的、可復(fù)用的、與操作系統(tǒng)、系統(tǒng)配置或Gradle版本無關(guān)的構(gòu)建。
在設(shè)置你的包裝器之前,你需要做兩件事情:創(chuàng)建一個(gè)包裝任務(wù),執(zhí)行這個(gè)任務(wù)生成包裝文件。為了能讓你的項(xiàng)目下載壓縮的Gradle運(yùn)行時(shí),定義一個(gè)Wrapper類型的任務(wù) 在里面指定你想使用的Gradle版本:
task wrapper(type: Wrapper) {
gradleVersion = '1.7'
}
然后執(zhí)行這個(gè)任務(wù):
$ gradle wrapper
:wrapper
整個(gè)過程如下圖:
http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag21.png" alt="" />
執(zhí)行完之后,你就能看到下面這個(gè)wrapper文件和你的構(gòu)建腳本:
http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag22.png" alt="" />
記住你只需要運(yùn)行g(shù)radle wrapper一次,以后你就能用wrapper來執(zhí)行你的任務(wù),下載下來的wrapper文件會(huì)被添加到版本控制系統(tǒng)中。如果你的系統(tǒng)中已經(jīng)安裝了Gradle運(yùn)行時(shí),你就不需要再添加一個(gè)gradle wrapper任務(wù),你可以直接運(yùn)行g(shù)radle wrapper任務(wù),這個(gè)任務(wù)會(huì)使用你的Gradle當(dāng)前版本來生成包裝文件。
上面生成了兩個(gè)執(zhí)行腳本,一個(gè)是運(yùn)行在*nix系統(tǒng)上的gradlew,另一個(gè)是運(yùn)行在Windows系統(tǒng)上的gradlew.bat,你只需要根據(jù)你的系統(tǒng)環(huán)境來執(zhí)行對(duì)應(yīng)的那一個(gè)腳本,比如上面提到的Mike執(zhí)行了gradlew.bat jettyRun任務(wù),下面是輸出:
> gradlew.bat jettyRun
Downloading http://services.gradle.org/distributions/gradle-1.7-bin.zip
...
//Unzips compressed wrapper file to predefined local directory
Unzipping C:\Documents and Settings\Mike\.gradle\wrapper\dists\gradle-1.7- bin\35oej0jnbfh6of4dd05531edaj\gradle-1.7-bin.zip to C:\Documents andSettings\Mike\.gradle\wrapper\dists\gradle-1.7-bin\35oej0jnbfh6of4dd05531edaj
Set executable permissions for: C:\Documents and Settings\Mike\.gradle\wrapper\dists\gradle-1.7- bin\35oej0jnbfh6of4dd05531edaj\gradle-1.7\bin\gradlew.bat
:compileJava
:processResources UP-TO-DATE
:classes
> Building > :jettyRun > Running at http://localhost:9090/todo
整個(gè)過程如下:
http://wiki.jikexueyuan.com/project/gradleIn-action/images/dag23.png" alt="" />
一些公司的安全措施非常嚴(yán)格,特別是當(dāng)你給政府工作的時(shí)候,你能夠訪問外網(wǎng)的能力是被限制的,在這種情況下你怎么讓你的項(xiàng)目使用Gradle包裝器?所以你需要修改默認(rèn)配置:
task wrapper(type: Wrapper) {
//Requested Gradle version
gradleVersion = '1.2'
//Target URL to retrieve Gradle wrapper distribution
distributionUrl = 'http://myenterprise.com/gradle/dists'
//Path where wrapper will be unzipped relative to Gradle home directory
distributionPath = 'gradle-dists'
}
非常直接明顯對(duì)不對(duì)?你還可以了解更多的特性,如果你想了解更多關(guān)于Gradle包裝器DSL的信息,可以查看這個(gè)網(wǎng)址:http://gradle.org/docs/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html