Gradle Wrapper
當(dāng)把本地一個項目放入到遠(yuǎn)程版本庫的時候上煤,如果這個項目是以gradle構(gòu)建的呻澜,那么其他人從遠(yuǎn)程倉庫拉取代碼之后如果本地沒有安裝過gradle會無法編譯運(yùn)行,如果對gradle不熟悉怕磨,會使得無法很好的去快速構(gòu)建項目代碼演痒。所以gradle可以自動生成一鍵運(yùn)行的腳本,把這些一起上傳遠(yuǎn)程倉庫妄讯,使得即使沒有安裝gradle也可以自動去安裝并且編譯項目代碼所刀。
- Gradle是個構(gòu)建系統(tǒng),能夠簡化你的編譯捞挥、打包浮创、測試過程。熟悉Java的同學(xué)砌函,可以把Gradle類比成Maven斩披。
- Gradle Wrapper的作用是簡化Gradle本身的安裝、部署讹俊。不同版本的項目可能需要不同版本的Gradle垦沉,手工部署的話比較麻煩,而且可能產(chǎn)生沖突仍劈,所以需要Gradle Wrapper幫你搞定這些事情厕倍。Gradle Wrapper是Gradle項目的一部分。
簡單的gradle wrapper生成
【gradle wrapper生成】
我們在新建的目錄下使用命令行輸入gradle wrapper
命令:
在新建的目錄下可以看到以下文件:
【gradle wrapper文件說明】
|____gradle
| |____wrapper
| | |____gradle-wrapper.jar //具體業(yè)務(wù)邏輯
| | |____gradle-wrapper.properties //配置文件
|____gradlew //Linux 下可執(zhí)行腳本
|____gradlew.bat //Windows 下可執(zhí)行腳本
(1)gradlew.bat
gradlew.bat
是bat 腳本贩疙,Windows 用戶可以通過它執(zhí)行 Gradle 任務(wù)讹弯,配合gradle文件夾使用。
而Linux使用的是gradlew
这溅,gradlew
是一個shell 腳本组民,Unix 用戶可以通過它來執(zhí)行 Gradle 任務(wù)。
(2)gradle-wrapper.jar
gradle-wrapper.jar是Gradle Wrapper的主體功能包(wrapper 的代碼所在)悲靴。項目打包必須要有的臭胜,不然無法去執(zhí)行g(shù)radlew。
(3)gradle-wrapper.properties
gradle-wrapper.properties
文件主要指定了該項目需要什么版本的Gradle,從哪里下載該版本的Gradle耸三,下載下來放到哪里乱陡。從圖示項目中可以知道我要使用gradle-3.5版本。
我們使用gradlew命令的使用仪壮,會根據(jù)這個文件來使用對應(yīng)的gradle進(jìn)行構(gòu)建憨颠。當(dāng)本地GRADLE_USER_HOME
(當(dāng)前用戶目錄,一般指~/.gradle
)中的~/.gradle/wrapper/dists
沒有安裝gradle時睛驳,將會自動從此地址distributionUrl
中下載gradle烙心,之后的執(zhí)行將不會再次下載安裝。
【文件如何配合使用】
當(dāng)從版本庫下載代碼之后乏沸,如果你本機(jī)安裝過gradle淫茵,當(dāng)然直接直接編譯運(yùn)行既可。但是對沒有安裝gradle的用戶蹬跃,可以執(zhí)行項目根目錄下的gradlew.bat
腳本(Linux是執(zhí)行gradlew
命令)匙瘪,將會在gradle-wrapper.properties
中的~/.gradle/wrapper/dists
目錄中首次下載并安裝gradle并可以編譯代碼,一個指令可以下載并安裝gradle來構(gòu)建項目蝶缀,由此可見非常方便丹喻。大概流程如下:
- 解析
gradle-wrapper.properties
文件,獲取項目需要的 gradle 版本下載地址翁都。 - 判斷本地用戶目錄下的
~/.gradle
目錄下是否存在該版本碍论,不存在該版本,走第3點(diǎn)柄慰,存在走第4點(diǎn)鳍悠。 - 下載
gradle-wrapper.properties
指定版本,并解壓到用戶目錄的下~/.gradle
文件下坐搔。 - 利用
~/.gradle
目錄下對應(yīng)的版本的 gradle 進(jìn)行相應(yīng)自動編譯操作藏研。
將Wrapper添加到Gradle項目
在命令行中運(yùn)行 wrapper
task 即可配置Wrapper,如下:
$gradle wrapper --gradle-version 2.8
:wrapper
BUILD SUCCESSFUL
Total time: 3.546 secs
運(yùn)行完畢后概行,可以看到在項目的更目錄中多了上面提到的一些文件和目錄:
除了直接在命令行執(zhí)行外蠢挡,也可以在build.gradle文件中添加一個Wrapper
task:
task wrapper(type: Wrapper){ // type: Wrapper中的Wrapper開頭W必須大寫
gradleVersion='2.8'
distributionBase='GRADLE_USER_HOME'
distributionPath='wrapper/dists'
zipStoreBase='GRADLE_USER_HOME'
zipStorePath='wrapper/dists'
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
}
//每一項都可單獨(dú)設(shè)置,gradle-2.8-all.zip表示下載該版本Gradle的源碼
然后執(zhí)行這個task:
gradle -q wrapper