美文网首页
Gradle学习使用

Gradle学习使用

作者: 独爱爱66 | 来源:发表于2020-05-12 23:05 被阅读0次

    Gradle是什么?

    基于特定领域语言Groovy来进行项目管理的自动化构建工具

    对比于Maven的区别?

    Maven基于传统xml依赖管理,工作中的直观缺点是在项目规模越来越大的时候,pom依赖眼花缭乱,管理起来很费劲,而且之前的文章《maven构建依赖管理和依赖范围》中写到在工作中遇到jar包冲突,不好排查。Gradle因其的简洁灵活,功能强大,可以通过查看依赖报告直观的解决依赖冲突,能更好的适用复杂的构建环境。

    Gradle安装很简单,步骤如下:

    1、从官网下载压缩包:https://gradle.org/

    2、配置环境变量

    3、gradle -v, 验证环境变量配置是否成功

    验证gradle安装成功

    3、注意配置新建变量 GRADLE_USER_HOME

    变量名:GRADLE_USER_HOME

    变量值:自定义Gradle仓库目录或者Maven的仓库目录(如:D:\apache-maven-3.1.1\repository)

    在Gradle安装目录下的 init.d 文件夹下,新建一个 init.gradle 文件,里面填写以下配置

    定义repositories 中 jar 包的获取顺序,优先使用本地maven仓库,在maven切换到gradle很方便。非常实用,重点!!!

    配置gradle使用本地maven仓库

    Groovy语言如何使用,具有哪些特性?

    Gradle简洁灵活的特点主要是,基于Groovy这种动态语言才能够实现,所以想学会Gradle,核心的在于能够学会Groovy如何编写。Groovy编码同Java一样都是被编译成字节码文件运行在JVM虚拟机上,直接通过比较学习来了解Groovy几乎没有什么难度。

    Groovy主要的特点如下:

    Groovy完全兼容Java的语法,但是在使用时在Java的基础上又简化很多

    1、分号是可选的,可以省略不写

    2、类、方法默认是public,不像Java有好几个修饰符

    3、编译器自动给属性添加getter/setter方法

    4、属性可以直接用点号获取

    5、最后一个表达式的值会被作为返回值,return可以不写

    6、==在Java中比较的是内存地址,在Groovy中比较的是值,等同于equals()

    高效的Groovy特性:

    1、assert语句

    2、动态语言,自动指定变量类型

    3、字符串有三种表达方式单引号,双引号,三个单引号

    4、Groovy中结合List、Map有更简单的写法

    5、闭包,理解是把代码块作为参数传入方法中调用

    代码展示以上特性:

    groovy特性

    自动化构建工具主要解决的是,依赖管理,自动化测试,项目部署,让这些重复性的工作,能使用构建工具简单舒服的依赖管理,这些功能maven,gradle都已经具备,只是对比maven,gradle实现的更加简洁灵活,非常好用。

    gradle兼容maven,所以目录结构相同:

    gradle项目目录结构

    而在进行依赖管理的时候到底与maven有何不同?

    1、引入依赖形式不同

    maven通过groupId、artifactId、version唯确定jar包:

    maven引依赖

    gradle通过group、name、 version唯一确定jar包 :

    gradle引依赖

    2、解决版本冲突方式不同:

    出现版本冲突的原因是依赖的传递性,可以理解为爸爸依赖爷爷,如果儿子依赖爸爸,那么确定儿子依赖爷爷。

    maven:

    只能进行手动排除

    maven解决jar包冲突

    gradle:

    默认自动使用高版本,所以大部分时候并不需要开发人员自己去指定一个版本,有效的避免了开发中自己去哼哧哼哧j解决ar包冲突问题,下图显示jar包冲突时默认使用了高版本。

    默认引入高版本

    除了默认外可以直接排除传递性依赖

    还可以修改默认的策略,来强制指定一个版本

    有依赖报告可以查看,方便找问题,这三处截图省略。

    3、gradle具备自定任务功能task

    比如通过自定义构建web项目的目录结构,创建成功

    自定义task

    4、多项目构建

    很多时候一个项目都只是按MVC来模块化,较少的模块一般是简单的项目,在复杂项目中有非常多的模块,如果maven进行管理通常都是通过继承parent模块来层层继承,xml的配置依赖jar包过多,梳理项目间的依赖关系会格外心累,而gradle真的是多项目构建的福音,在parent项目build.gradle文件中,使用allprojects{}可以对所有模块需要的配置进行指定,使用subprojects{}可以对所有子模块需要依赖的包进行指定,这样其他子项目就不需要进行依赖了,要改动版本只需要改一处就可以,涉及代码较多,本文不展开说明。

    5、自动化测试

    在自动化测试上,maven和gradlle没有太大差别,只要把测试代码写到指定的目录,那么构建工具就可以自动发现测试用例自动执行。gradle更优秀的是在build之后到reports目录下,对测试结果有index.html,使用页面形式对测试的结果进行可视化的展示。

    html测试报告

    6、项目部署

    maven和gradle都可以将项目打包到本地和指定的远程仓库,目前我工作中使用的就是通过maven将项目打包的公司的svn上,而gradle是通过maven-publish插件操做,操作的也是maven的仓库,很明显使用gradle更便捷。

    gradle部署配置

    相关文章

      网友评论

          本文标题:Gradle学习使用

          本文链接:https://www.haomeiwen.com/subject/vtswnhtx.html