gradlew项目构建工具

gradlew

1、介绍

gradlew是Gradle Wrapper

2、目的/作用

作用一

通常情况,项目中使用项目构建工具,比如maven或者gradle时,都需要将对应的软件下载下来,然后配置(M2_HOME、BIN等),再进行使用。

为了简化上述步骤(软件下载 ->软件配置),gradlew(Gradle Wrapper)的目的就在于此:即:使其使用者再本地计算机中不需要安装与配置gradle时,依然可以通过一个简单的命令实现对一个gradle项目的构建。

作用二

本机gradle是2.0版本,构建某一个项目需要3.0版本,麻烦的做法是下载3.0gradle并配置环境变量、将bin加入path。而使用gradlew可以很好的解决此场景。

3、原理

1)执行gradlew命令时,gradlew会首先进行检查本机是否已经安装并配置了gradle,会从远程下载gradle到本地

2)自动进行解压

3)执行gralde相关命令对项目进行构建

4)之后再次使用时就直接执行gradlew对应的gradle命令

4、最佳实践

但凡使用gradle来构建项目,并且构建的是一个比较正式的公司里的项目,请加上gradlew。并通过如下的流程使用gradle与gradlew

4.1 项目的首个创建者需要安装并且配置gradle,并使用gradle创建gradle项目

通过IDEA建立gradle项目:

1)新建gradle工程

上图选择传统的local gradle方式,一步步过度到gradlew上。

之后点击next,选择项目路径后点击finish。

gradle会进行初始构建:

2)项目创建者本机需要安装并配置好gradle环境,然后在项目根目录执行gradle wrapper命令生成:gradlew脚本、gradlew.bat脚本、gradle文件夹:

其中gradle/gradle-wrapper.properties中配置了运行gradlew时下载gradle地址:

之后再运行gradlew clean build进行编译时,此时不会使用本机已经安装的gradle,而是根据gradle-wrapper.properties中配置的地址下载gradle并安装并使用其进行构建项目:

默认安装地址为:用户目录/.gradle/wrapper/dists(gradle-wrapper.properties配置文件中distributionBase属性设置),默认是当前操作系统用户目录,可以增加环境变量修改路径:

可以通过如下命令修改gradlew的配置(实际上是通过下面命令修改gradle-wrapper.properties)中内容

上图修改完gradlew使用的gradle版本,再执行gradlew命令(比如gradlew clean build构建项目)时,会重新下载对应的版本。

因此gradle/gradle-wrapper.propertie是非常重要的gradlewrapper的属性文件。

gradlew与gradle说明:

使用gradlew执行命令与使用gradle执行的作用是一样的(命令使用方式、参数都是一样的),比如gradle clean build与gradlew clean build,只不过是通过不同的gradle版本,gradlew执行时使用的gradle版本是gradle-wrapper.properties中配置的,而使用gradle执行时使用的gradle版本是系统环境变量中的gradle

gradle-wrapper.properties配置文件维护建议

不推荐直接维护gradle-wrapper.propertie配置文件(无论是直接手工修改该文件还是通过上述命令行方式修改,本质上都是直接修改这个配置文件),而是将配置项的修改或者增加的配置想在项目的build.gradle文件中通过task wrapper的方式修改,不推荐直接维护的原因是:如果gradlew升级的话,还需要将之前在gradle-wrapper.propertie中的个性化修改再修改一次:

(其中distributionType有两个选项:all与bin,all是下载gradle全部,包括二进制可运行程序、源码、文档,而bin只有二进制可运行程序)

整个第2)部分总结

由项目的创建者使用gradle创建项目并通过项目的build.gradle文件的task wrapper修改好gradlew属性(其他人使用gradlew构建项目使用的gradle版本,下载范围等属性),然后由项目的创建者执行一次gradle wrapper命令生成gradlew、gradlew.bat、gradle文件夹(如果gradlew属性修改,还需要重新执行gradle wrapper命令)

3)项目创建者将如下截图中选中的文件上传到版本库中,如果使用的git,其他文件及目录加入.gitignore中,无需上传

4.2 其他研发人员

其他研发人员不需要安装gradle,直接下载项目,通过gradlew命令(如gradlew clean build)就可以实现在不安装gradle条件下,完成项目的构建。

4.3 注意

使用gradlew时,其使用的gradle版本是配置文件(项目build.gradle中或者gradle-wrapper.propertie)中设置的,与系统环境变量中设置的gradle是不同的,版本有可能是不同的,需要注意。

 

 

原文地址:https://www.cnblogs.com/xiaolei2017/p/13264734.html