【譯】The Gradle Wrapper

一. ?The Gradle Wrapper(這是Gradle Wrapper的總覽,部分翻譯)

大多數工具在使用前要求先安裝到你的電腦上。如果安裝過程很簡單,你會覺得可以接受,但這有可能在build時對用戶造成不必要的麻煩。另外,同樣重要的一點是,當我們在build時,對于這些工具,用戶是否安裝的了正確的版本?假設他們build了一個老版本的軟件會怎樣呢?

作為Gradle build的推薦方式,The Gradle Wrapper(此后簡稱Wrapper)解決了如上兩個問題。

1. 使用Wrapper執行build

如果一個Gradle工程已經設置過了Wrapper(我們推薦所有的工程這樣做),你可以在項目的根目錄下使用如下命令行之一執行build操作

  • /gradlew <task> (on Unix-like platforms such as Linux and Mac OS X)
  • /gradlew <task> (on Windows using the gradlew.bat batch file)
    每個Wrapper都與一個Gradle相關聯。所以指定一個Gradle版本執行如上指令,都會去下載相應的Gradle distribution,并且使用它去執行build

這不僅意味著你不需要去人為的安裝Gradle,還意味著那你能確保所使用的Gradle版本是這個build所指定的。這使得你歷史的build都更加可靠。無論何時,無論你是在使用說明,Stack Obverflow,文章還是哪里,當你看到一行命令是以gradle...開頭的,你都可以使用如上恰當指令。

在一個Gradle工程中,為了保證Wrapper的完整性,并且為了確保你不會刪除Wrapper中任何重要的文件,這里列出了組成Wrapper的文件和目錄:

  • gradlew (Unix Shell script)
  • gradlew.bat (Windows batch file)
  • gradle/wrapper/gradle-wrapper.jar (Wrapper JAR)
  • gradle/wrapper/gradle-wrapper.properties (Wrapper properties

如果你想知道Gradle distributions存放在哪,你可以在你的用戶根目錄下的$USER_HOME/.gradle/wrapper/dists下找到。

2. 將Wrapper添加到工程匯中

Wrapper是必須納入版本控制的。當將wrapper配置到你的工程后,每個人都可以直接使用而不用事先安裝。更牛的是,每個使用者都可以確保使用是build可支持的版本。當然,這對于CI(Continuous Integration 持續集成 )的服務器(比如:常規build你項目的服務器)也是非常有幫助的,因為不需要再server上進行配置。

通過執行Wrapper task(這條task永遠是有效的,即使你沒有把它加入你的build中),你可以安裝Wrapper到你的工程中。在命令行中使用--gradle-version用于指定一個Gradle的版本。默認情況下,Wrapper會使用bin distribution(因為這是最小體積的Gralde distribution)。一些IDEAAndroid StudioIntellij IDEA提供了可選的環境信息,當使用all distribution時。你可以通過使用--distribution-type選擇不同的Gradle distribution類型。你同樣可以使用--gradle-distribution-url,通過設置distribution URL直接去下載相應的Gradle。如果沒有明確版本號或者distribution URL,the Wrapper will be configured to use the gradle version the wrapper task is executed with. 所以當你使用Gradle 2.4run Warapper taskWrapper configuration就會被默認為2.4版本。

其實上面教的如何在工程中添加Wrapper,我們是不用管的。

因為AS工程建立時默認就把第1節的4個文件包含進來了,不需要自己搭環境去拉取。

二. ?Wrapper(與上面完全不同,這個Wrapper只表示Gradle的一個Task,只翻譯第一段)

這個Task的作用是:生成一些腳本(Linux/Unix 和 windows),可以讓你使用Gradlebuild你的工程,而無需事先安裝Gradle

當用戶執行第一次執行wrapper腳本時,腳本會下載相應的Gradle distribution并且使用下載后的distribution去執行build操作。當使用wrapper腳本時,任何已經安裝的Gradle distribution將會被忽略。

通過該Task生成的的腳本,應該被包含到版本控制系統中。該Task生成的名為gradle-wrapper.jar的小的引導JAR和屬性文件,同樣需要包含到版本控制系統中。這些腳本就是JAR的代理。

這個文檔是Gradle的官方文檔,講述Wrapper這個Task的作用:
由該Task生成gradlew/gradlew.bat腳本以及gradle-wrapper.jargradle-wrapper.properties文件。

而我們在AS的實際使用中,并不會去run這個task去生成上面的文件,新建一個項目時這些文件默認都會被創建。我要使用這些文件去下載相應的Gradle,以及去build。而不是從頭開始造車輪。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言 從2013年Google推出Android Studio(后面以AS簡稱)開始,到現在已經歷經3年,版本也發...
    dfqin閱讀 1,880評論 1 3
  • 本文Demo的完整工程代碼, 參考這里的StudyPackage 目錄 什么是Gradle 為什么是Gradle ...
    諾之林閱讀 2,729評論 0 18
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,971評論 6 342
  • Gradle是一款非常優秀的構建系統工具,它的DSL基于Groovy實現,可以讓你很方便的通過代碼控制這些DSL來...
    飛雪無情flysnow_org閱讀 3,555評論 0 35
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139