体验Gradle(10):包装器和内嵌Gradle

在本系列的最终一篇里,我们将介绍Gradle包装器,以及如何在你的应用程序里嵌入Gradle。

包装器的出现是基于这样的需求,即让没有装Gradle的机器上也能正常的构建你的项目。它非常象Groovy里的Grape:如果目标机器上没有Gradle,包装器将先下载安装合适版本的Gradle,然后再运行相应的任务。这真是太方便了,而更让人欣喜的是创建包装器一点也不难,利用Gradle的wrapper任务就行了。

创建包装器的步骤如下:

  1. 修改你的build.gradle,在里面加入:
  2. task wrapper(type:Wrapper){
        gradleVersion= '0.8'
        jarPath= 'wrapper'
    }
    
  3. 运行"gradle wrapper",这时Gradle将会创建包装器。它主要完成了这么几件工作:首先,项目的根目录下会出现两个文件,gradlew和gradlew.bat。它们的作用完全一样,只不过是针对不同的操作系统而已。其次,会创建一个wrapper目录,这个目录是你在wrapper任务里定义个jarPath的值。最后,Gradle会往这个目录下复制两个文件:gradle-wrapper.jar和gradle-wrapper.properties。
  4. 把这些文件全都提交到版本库里随项目一起发布出去。

包装器创建完毕之后,在目标机器上只要把原来的“gradle 任务”换成“gradlew 任务”即可。

至于在应用中嵌入Gradle就更简单了,使用org.gradle.BootstrapMain.main

System.setProperty("gradle.home", "Gradle的Home目录");
org.gradle.BootstrapMain.main(["-b", "build.gradle的路径", "任务名"] as String[])

只需两句话!这里需要注意的是,在应用里嵌入Gradle之后,Gradle将以当面应用的路径作为主路径,即build.gradle里的路径都是以此为基础的。在这里还有一个更加详细的例子,有兴趣的请访问。

自此,所有Gradle的系列便结束了。还是那句话,本系列只能算是参考手册的速览,要想深入,还得勤查参考手册和API。


本系列的其它部分:

By foxgem - Posted on 26 七月 2010