鍍金池/ 教程/ 物聯(lián)網(wǎng)/ Gradle包裝器
依賴管理實戰(zhàn)
配置遠程倉庫
安裝Gradle
簡介
項目自動化簡介
配置子項目
Gradle強大的特性
自動化測試
簡介
掌握構(gòu)建生命周期
使用命令行操作
構(gòu)建Java項目
管理任務(wù)
構(gòu)建工具
連續(xù)傳遞的特性
用Gradle開發(fā)Web項目
聲明依賴
構(gòu)建塊
簡介
測試Java應(yīng)用
java構(gòu)建工具
為什么選擇Gradle
拆分項目文件
單元測試
多項目打包
Gradle 起步
介紹這個Gradle項目
簡介
自定義腳本
Gradle包裝器
簡要概述依賴管理
項目模塊化

Gradle包裝器

你把你的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)建。

配置Gradle包裝器

在設(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