gradle

1 gradle介绍:

                Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。在github上,gradle项目很多,有的是gradel跟maven构建一块儿使用,可以看出,gradle有一种逐渐替代maven的架势,当我们执行gradle的时候,gradle首先是按顺序解析各个gradle文件

简单的说,Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。实际上,当我们想要更灵活的构建过程时,Gradle就成为了一个编程框架——我们可以通过编程让构建过程按我们的意愿进行。也就是说,当我们把Gradle作为构建工具使用时,我们只需要掌握它的配置脚本的基本写法就OK了。

        Groovy对自己的定义就是:Groovy是在 java平台上的、 具有像Python, Ruby 和 Smalltalk 语言特性的灵活动态语言, Groovy保证了这些特性像 Java语法一样被 Java开发者使用。Groovy有时候又像一种脚本语言。前文也提到过,当我执行Groovy脚本时,Groovy会先将其编译成Java类字节码,然后通过Jvm来执行这个Java类。由于Groovy Code在真正执行的时候已经变成了Java字节码,所以JVM根本不知道自己运行的是Groovy代码。

        Gradle对象:当我们执行gradle xxx或者什么的时候,gradle会从默认的配置脚本中构造出一个Gradle对象。

        Project对象:每一个build.gradle会转换成一个Project对象。

        Settings对象:显然,每一个settings.gradle都会转换成一个Settings对象

        3者之间的关系

2 gradle基本组分:

        2.1 Project与Task

        在Gradle中,每一个待构建的工程是一个Project,构建一个Project需要执行一系列Task,比如编译、打包这些构建过程的子过程都对应着一个Task。具体来说,一个apk文件的构建包含以下Task:Java源码编译、资源文件编译、Lint检查、打包以生成最终的apk文件等等。

        2.2 插件

        插件的核心工作有两个:一是定义Task;二是执行Task。也就是说,我们想让Gradle能正常工作,完成整个构建流程中的一系列Task的执行,必须导入合适的插件,这些插件中定义了构建Project中的一系列Task,并且负责执行相应的Task。

3 Gradle工作流程

  1. 首先是初始化阶段。对我们前面的multi-project build而言,就是执行settings.gradle

        2. Initiliazation phase的下一个阶段是Configration阶段。

        3. Configration阶段的目标是解析每个project中的build.gradle。比如multi-project build例子中, 

        解析每个子目录中的build.gradle。在这两个阶段之间,我们可以加一些定制化的Hook。这当然是通过 API来添加的。

        4. Configuration阶段完了后,整个build的project以及内部的Task关系就确定了。恩?前面说过,一个 Project包含很多Task,每个Task之间有依赖关系。Configuration会建立一个有向图来描述Task之间的依赖关系。所以,我们可以添加一个HOOK,即当Task关系图建立好后,执行一些操作

        5. 最后一个阶段就是执行任务了。当然,任务执行完后,我们还可以加Hook

        关于Gradle的工作流程,你只要记住:

  1. Gradle有一个初始化流程,这个时候settings.gradle会执行。
  2. 在配置阶段,每个Project都会被解析,其内部的任务也会被添加到一个有向图里,用于解决执行过程中的依赖关系。
  3. 然后才是执行阶段。你在gradle xxx中指定什么任务,gradle就会将这个xxx任务链上的所有任务全部按依赖顺序执行一遍!

 

4 Wrapper工作流程(主要用在gradle build这步)

        执行任何Gradle构建的推荐方法是在Gradle Wrapper(简称“Wrapper”)的帮助下。Wrapper是一个脚本,它调用Gradle的声明版本,必要时事先下载它。因此,开发人员可以快速启动并运行Gradle项目,而无需遵循手动安装过程,从而节省公司的时间和金钱

        4.1 如何生成wrapper文件

        4.2 使用gradle wrapper

        建议始终使用Wrapper执行构建,以确保构建的可靠,受控和标准化执行。使用Wrapper看起来几乎就像使用Gradle安装运行构建一样,根据操作系统,您可以运行gradlew或gradlew.bat代替gradle命令。

        4.3 升级gradle wrapper

        4.4 自定义Gradle Wrapper

        使用配置运行./gradlew wrapper --gradle-version 4.1就足以distributionUrl在Wrapper属性文件中生成一个将请求-all分发的值

5 gradle安装

        Gradle | Installation下载包路径

        5.1 首先需要安装java环境

        yum install -y java-1.8.0-openjdk.x86_64

        5.2 设置gradle环境变量

6 gradle使用

        gradle2个重要的文件,将这2个文件放到project目录下,就行

        build.gradle

apply from: "${configFile}"    // 引用了另一个配置文件,这个配置文件gradle.properties
			       // 引用变量值的用法: ${varName} 
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'base'
apply plugin: 'eclipse'
apply plugin: 'maven'
apply plugin: 'maven-publish'
sourceCompatibility = jdkVersion
targetCompatibility = jdkVersion
compileJava.options.encoding = encodingType
compileTestJava.options.encoding = encodingType
group = GroupId
version = projectVersion
 
buildscript {
    repositories {
        mavenCentral()
    }
	
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        //classpath 'org.springframework:springloaded:1.2.7.RELEASE'
    }
}

        gradle.properties

jdkVersion= 1.8
encodingType= UTF-8
configFile = config.gradle
 
GroupId = priv.allen.sso
projectVersion = 1.0

         setting.gradle一般用的就是clude函数,主要是将各个project写在一起

        查看工程信息

        查看当前工程支持的操作任务

        清理工程

        代码检查及测试

        编译项目并执行检查及测试

7 使用gradle wrapper构建

        Gradle Wrapper是开始一个Gradle构建的首选方式,需要在我们的build.gradle文件中增加以下代码

        如何在没有安装gradle系统上执行构建系统,只需要将下面的2个文件迁移到其他机器上,执行./gradlew build,这样的话,就能使用gradle构建系统了。

        运行编译好的项目

8 最终的目录结构

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值