Gradle Wrapper(下面以wrapper代指),是启动一个gradle编译的首选方式,wrapper是可以在window和其他系统中执行的脚本。当你通过wrapper启动一个gradle编译的时候,gradle教会自动下载并且启动编译。
你应该把Wrapper放在版本控制系统中的。随着你的项目一起发布wrapper,任何人都可以在事先没有下载安装gradle的情况下,进行编辑工作。还有更好的好处,这样能保证任何构建系统的人都能使用,大家一起开发使用的相同版本的gradle版本。当然这对于持续集成服务器也是非常好的(即通常构建你项目的服务器),因为在服务器端不需要任何配置。
你执行wrapper task来安装wrapper到你的项目。(这个task通常来说是可以执行的,即使你并没有把这个task加入到你的构建当中)。在命令行下执行—gradle-version来指定你的gradle版本号。你也可以通过设置URL直接从gradle的发行版中下载gradle。如果没有指定版本号或者发行版的URL。Wrapper的版本号,将会被设置正在执行wrapper task的那个版本gradle的版本。
为了版本整洁,例子我直接截官网的图。
Wrapper将来可能会被增加配置到你的wrapper任务的脚本当中,然后执行。
在这些执行完之后,你在你的项目目录下可以找到以下是的新的或者被更新过的文件。(假如默认的配置正在被wrapper task使用)。
在studio项目文件夹下,执行会产生。
所有这些文件都应该被提交到你的版本控制系统。这是唯一一个需要一次做完的。在这些文件都被添加到项目之后,这个项目应该通过增加的gradlew命令被构建,gradlew命令可以和gradle命令一样使用。
如果你想要切换到一个新的gradle版本,你不需要重新执行wrapper任务,在gradle-wrapper.properties文件中直接改变相应的条目就够了。但是,如果你想要利用gradle wrapper的新的功能,你还是需要重新生成wrapper文件的。
如果你通过gradlew来运行gradle,wrapper会检查gradle的发行版是否可以用,如果可以,则gradlew将会通过给gradlew传入原始gradlew的参数来代为执行相应版本的gradle命令。
如果没有找到相应的gradlew的发行版,则会先下载。
当你配这了wrapper的任务之后,你可以指定你想要使用的gradle的版本了。Gradlew将会从gradle的仓库下载对应的gradle的发行版了。同时,你也可以指定相应的发行版的URL来下载。如果你既没有指定版本,也没有指定下载的URL,那么gradlew将会下载他以前常用来生成wrapper文件的版本。
进一步详细了解怎么配置wrapper,你看wrapper的API文档。
如果希望通过gradlew构建的时候不希望出现下载的时候,直接把一个gradle的发行版的Zip文档直接添加到你的wrapper配置的版本控制系统所在的位置。也支持相对的URL,你可以直接指定一个相对于radle-wrapper.properties
的相对位置。
如果你通过wrapper来构建的话,安装在电脑上的任何gradle发行版本都会被忽略掉。
Wrapper任务需要添加一些文件权限来,gradlew才能有权限执行相应的Unix命令。Subversion保护这些文件权限。我们不确定其他版本控制系统是如何处理这些命令和曲线的。一般执行”sh gradlew”应该是有用的。