Gradle学习使用

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部署配置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,348评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,122评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,936评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,427评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,467评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,785评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,931评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,696评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,141评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,483评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,625评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,291评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,892评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,492评论 2 348