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