Gradle Wrapper


Gradle Wrapper

當把本地一個項目放入到遠程版本庫的時候,如果這個項目是以gradle構建的,那么其他人從遠程倉庫拉取代碼之后如果本地沒有安裝過gradle會無法編譯運行,如果對gradle不熟悉,會使得無法很好的去快速構建項目代碼。所以gradle可以自動生成一鍵運行的腳本,把這些一起上傳遠程倉庫,使得即使沒有安裝gradle也可以自動去安裝並且編譯項目代碼。

  • Gradle是個構建系統,能夠簡化你的編譯、打包、測試過程。熟悉Java的同學,可以把Gradle類比成Maven。
  • Gradle Wrapper的作用是簡化Gradle本身的安裝、部署。不同版本的項目可能需要不同版本的Gradle,手工部署的話比較麻煩,而且可能產生沖突,所以需要Gradle Wrapper幫你搞定這些事情。Gradle Wrapper是Gradle項目的一部分。

簡單的gradle wrapper生成

【gradle wrapper生成】

我們在新建的目錄下使用命令行輸入gradle wrapper命令:

 
 

在新建的目錄下可以看到以下文件:

 
 
 
 

【gradle wrapper文件說明】

|____gradle | |____wrapper | | |____gradle-wrapper.jar //具體業務邏輯 | | |____gradle-wrapper.properties //配置文件 |____gradlew //Linux 下可執行腳本 |____gradlew.bat //Windows 下可執行腳本 

(1)gradlew.bat

gradlew.bat是bat 腳本,Windows 用戶可以通過它執行 Gradle 任務,配合gradle文件夾使用。

而Linux使用的是gradlewgradlew是一個shell 腳本,Unix 用戶可以通過它來執行 Gradle 任務。

(2)gradle-wrapper.jar

gradle-wrapper.jar是Gradle Wrapper的主體功能包(wrapper 的代碼所在)。項目打包必須要有的,不然無法去執行gradlew。

(3)gradle-wrapper.properties

gradle-wrapper.properties文件主要指定了該項目需要什么版本的Gradle,從哪里下載該版本的Gradle,下載下來放到哪里。從圖示項目中可以知道我要使用gradle-3.5版本。

 
 

我們使用gradlew命令的使用,會根據這個文件來使用對應的gradle進行構建。當本地GRADLE_USER_HOME(當前用戶目錄,一般指~/.gradle)中的~/.gradle/wrapper/dists沒有安裝gradle時,將會自動從此地址distributionUrl中下載gradle,之后的執行將不會再次下載安裝。

【文件如何配合使用】

當從版本庫下載代碼之后,如果你本機安裝過gradle,當然直接直接編譯運行既可。但是對沒有安裝gradle的用戶,可以執行項目根目錄下的gradlew.bat腳本(Linux是執行gradlew命令)

將會在gradle-wrapper.properties中的~/.gradle/wrapper/dists目錄中首次下載並安裝gradle並可以編譯代碼,一個指令可以下載並安裝gradle來構建項目,由此可見非常方便。大概流程如下:

  1. 解析gradle-wrapper.properties文件,獲取項目需要的 gradle 版本下載地址。
  2. 判斷本地用戶目錄下的~/.gradle目錄下是否存在該版本,不存在該版本,走第3點,存在走第4點。
  3. 下載gradle-wrapper.properties指定版本,並解壓到用戶目錄的下 ~/.gradle文件下。
  4. 利用 ~/.gradle目錄下對應的版本的 gradle 進行相應自動編譯操作。

將Wrapper添加到Gradle項目

在命令行中運行 wrappertask 即可配置Wrapper,如下:

$gradle wrapper --gradle-version 2.8
:wrapper
BUILD SUCCESSFUL
Total time: 3.546 secs

 

運行完畢后,可以看到在項目的更目錄中多了上面提到的一些文件和目錄:

 
 

除了直接在命令行執行外,也可以在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
}

 

 //每一項都可單獨設置,gradle-2.8-all.zip表示下載該版本Gradle的源碼 

然后執行這個task:

gradle -q wrapper

 








免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM