zoukankan      html  css  js  c++  java
  • 看到你还在用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构建工具。

    2020年了,相信很多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语言,一种编程语言,来处理多条件问题,易如反掌。

    老司机从事软件行业N年,自己的一个体会是:

     

    1. 软件研发、测试开发行业顶尖的是Google;

    2. Google内部使用的,用不了多久就会被外界广泛使用,有些甚至会成为业内默认标准;

    所以,Google推崇Gradle,那么你呢?!

     总之一句话——Gradle真香!



  • 相关阅读:
    Pymsql
    MySQL基础操/下
    MySQL基础操作
    前端学习之jquery/下
    前端学习之jquery
    Python之异常处理
    Python之模块和包导入
    Python之模块
    Python之面向对象上下文管理协议
    Python之面向对象slots与迭代器协议
  • 原文地址:https://www.cnblogs.com/testfan2019/p/15479460.html
Copyright © 2011-2022 走看看