当前位置: 首页 > article >正文

看到你还在用Maven,Gradle难道不香吗?

Maven是一个非常经典好用的JAVA项目构建工具,所有用JAVA开发或者测试开发的小伙伴们都知道。

不过,一向不走寻常路的老司机觉得Maven不爽!

第一:Maven的配置文件是XML,项目依赖的包一旦多了, XML文件就会变得冗长;

第二:XML确实不太灵活,假如老司机需要在构建过程中添加一些自定义逻辑,麻烦就多了;

设想一下:一个Android程序猿要适配若干Android手机的场景,就能理解自定义逻辑了。

if(isMoto){do something}

else if(isHuawei){do something}

第三:Maven对新版java支持不足,哪怕就是为了编译java11,也需要更新内置的Maven插件。

既然Maven作为一个构建工具有这么多不爽?那么小伙伴可以试试Gradle

图片

相信很多JAVA开发、测试开发小伙伴都用Intelij IDEA来编写JAVA程序了,IDEA默认就支持Gradle Wrapper,就是说不用单独安装Gradle也可以。

图片

试用过之后,Gradle有很多优点,老司机这里先列举两个。

01 Gradle速度快

gradle使用构建缓存、守护进程等方式提高编译速度。结果就是gradle的编译速度要远超maven,平均编译速度比Maven快好几倍,而且项目越大,这个差距就越明显。

在这里插入图片描述

柱状图表示编译时间,柱子越高表示编译时间越长。

02 Gradle灵活

Maven用XML,打包其实比较麻烦。很多Maven项目需要通过执行外部脚本的来完成一些需要灵活性的工作。与之相对,Gradle中配置文件就是构建脚本,用groovy编程语言写的,完全可以不需要外部脚本。

千万不要被groovy这种新语言吓跑了,很简单而且很多时候,我们需要编写的内容很有限,相对动辄上百行的XML,配合外部脚本,老司机觉得一站式服务还是挺好的。

光说不练假把式,光练不说傻把式。

图片

来两个例子看看Gradle比Maven、Ant究竟强在哪里?

1、对软件包的依赖,Gradle VS Maven

例如:junit

典型的Maven配置文件看起来这样:

<project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
</dependencies>
</project>

Gradle的处理,看起来这样:

apply plugin: “java”
group = “com.mycompany.app”
archivesBaseName = “my-app”
version = “1.0-SNAPSHOT”
repositories {
    mavenCentral()
}
dependencies {
    testCompile “junit:junit:3.8.1″
}

第一轮:Gradle胜出!

2.任务管理,Gradle VS Ant,例如:hello world

Gradle和Ant一样,都以task为最小执行单位。

Ant的写法:

<?xml version=”1.0″?>
<project name=”foo”>
  <target name=”hello”>
   <echo>Hello World</echo>
</target>
</project>

Gradle的写法:

task hello << {
   println “Hello World”
}

第二轮:Gradle完胜!

两轮比下来,Gradle的优点360度展示。再补充一点:

XML天生适合描述属性,不适合表达状态,比如:if… else… ; switch … case… 这类的显然不是XML的特长,但是面对多环境时候又必须面对;

Gradle采用了Groovy语言,一种编程语言,来处理多条件问题,易如反掌。

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。


http://www.kler.cn/a/382100.html

相关文章:

  • Docker 技术系列之安装多版本Mysql5.6和Mysql5.7
  • 重温设计模式--命令模式
  • OSPF的状态机
  • 秒优科技-供应链管理系统 login/doAction SQL注入漏洞复现
  • Oracle中间件 SOA之 OSB 12C服务器环境搭建
  • 计算机毕业设计原创定制(免费送源码):NodeJS+MVVM+MySQL 樱花在线视频网站
  • 霍尼韦尔测厚仪51000372怎么工作
  • stm32 挂死定位(死循环)
  • 【LeetCode】【算法】160.相交链表
  • 微信小程序寓言童话创作APP设计与实现
  • mysql error:1449权限问题 及 用户授权
  • 备战百天,准备机考【机考笔记】
  • Spring MVC 入门案例:开启 Web 开发之旅
  • http-server:Node.js下的轻量级静态服务器工具
  • SpringBoot配置Rabbit中的MessageConverter对象
  • 【spark面试题】RDD和DataFrame以及DataSet有什么异同
  • 链表-单链表
  • [MySQL]DCL语句
  • 【UML】- 用例图(结合银行案例解释其中的奥义)
  • 蓝桥杯专项---一维前缀/差分巩固题目
  • 【5.9】指针算法-双指针解验证回文字符串 Ⅱ
  • PostgreSQL 学习笔记:PostgreSQL 主从复制
  • 【自用】fastapi教程第三节--响应与响应体
  • 智能化在线考试及数据可视化系统
  • C++ 之类和对象
  • 集智书童 | UniMatch V2 推进半监督语义分割极限,以更低训练成本实现更优的语义分割结果-建议收藏!