一. 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
)。一些IDEA
如Android Studio
和Intellij 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.4
去run Warapper task
,Wrapper configuration
就会被默认为2.4版本。
其实上面教的如何在工程中添加
Wrapper
,我们是不用管的。
因为AS
工程建立时默认就把第1节的4个文件包含进来了,不需要自己搭环境去拉取。
二. Wrapper(与上面完全不同,这个Wrapper
只表示Gradle
的一个Task
,只翻译第一段)
这个Task
的作用是:生成一些脚本(Linux/Unix 和 windows
),可以让你使用Gradle
去build
你的工程,而无需事先安装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.jar
和gradle-wrapper.properties
文件。
而我们在AS
的实际使用中,并不会去run
这个task
去生成上面的文件,新建一个项目时这些文件默认都会被创建。我要使用这些文件去下载相应的Gradle
,以及去build
。而不是从头开始造车轮。