Gradle和Maven区别(转自zhihu

转载 2016年08月30日 18:28:48
Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。
整个过程可以分成以下几个步骤:
编译源代码
运行单元测试和集成测试
执行静态代码分析、生成分析报告
创建发布版本
部署到目标环境
部署传递过程
执行冒烟测试和自动功能测试
如果你手工去执行每一个步骤无疑效率比较低而且容易出错,有了自动化构建你只需要自定义你的构建逻辑,剩下的事情交给工具去完成。


虽然两者都是项目工具,但是maven现在已经是行业标准,Gradle是后起之秀,很多人对他的了解都是从android studio中得到的,Gradle抛弃了Maven的基于XML的繁琐配置,众所周知XML的阅读体验比较差,对于机器来说虽然容易识别,但毕竟是由人去维护的。取而代之的是Gradle采用了领域特定语言Groovy的配置,大大简化了构建代码的行数,比如在Maven中你要引入一个依赖:
<properties>
        <kaptcha.version>2.3</kaptcha.version>
    </properties>
<dependencies>
        <dependency>
            <groupId>com.google.code.kaptcha</groupId>
            <artifactId>kaptcha</artifactId>
            <version>${kaptcha.version}</version>
            <classifier>jdk15</classifier>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

然后我将其转换成Gradle脚本,结果是惊人的:
dependencies {
    compile('org.springframework:spring-core:2.5.6')
    compile('org.springframework:spring-beans:2.5.6')
    compile('org.springframework:spring-context:2.5.6')
    compile('com.google.code.kaptcha:kaptcha:2.3:jdk15')
    testCompile('junit:junit:4.7')
}
注意配置从原来的28行缩减至7行!这还不算我省略的一些父POM配置。依赖的groupId、artifactId、 version,scope甚至是classfier,一点都不少。较之于Maven或者Ant的XML配置脚本,Gradle使用的Grovvy脚本杀伤力太大了,爱美之心,人皆有之,相比于七旬老妇松松垮垮的皱纹,大家肯定都喜欢少女紧致的脸蛋,XML就是那老妇的皱纹。

Gradle给我最大的有点是两点。其一是简洁,基于Groovy的紧凑脚本实在让人爱不释手,在表述意图方面也没有什么不清晰的地方。其二是灵活,各种在Maven中难以下手的事情,在Gradle就是小菜一碟,比如修改现有的构建生命周期,几行配置就完成了,同样的事情,在Maven中你必须编写一个插件,那对于一个刚入门的用户来说,没个一两天几乎是不可能完成的任务。

Gradle、Ant和Maven的比较

一、项目自动构建的步骤 ·  编译源代码 ·  运行单元测试或者集成测试 ·  生成执行分析的报告 ·  创建发布版本 ·  部署到目标环境 二、Java的自动构建工具   早期...
  • villainy13579
  • villainy13579
  • 2016年01月18日 14:54
  • 1805

解决gradle的本地工程依赖和通过maven依赖之间的冲突问题

Gradle子工程之间通过 compile project(":XXX")这种方式依赖是非常便利的,但是这样的时候,如果用uploadArchives上传jar到maven,生成的pom.xml是不正...
  • cin_ie
  • cin_ie
  • 2014年09月20日 23:50
  • 3164

把项目从Maven迁移到Gradle

把项目从Maven迁移到Gradle作者:chszs,版权所有,未经同意,不得转载。博主主页:http://blog.csdn.net/chszs在过去几年中,Maven已成为Java及Java EE...
  • chszs
  • chszs
  • 2015年10月13日 15:01
  • 16353

通俗的理解Gradle(转自zhihu

软件开发讲究代码复用,通过复用可以使工程更易维护,代码量更少..... 开发者可以通过继承,组合,函数模块等实现不同程度上的代码复用.但不知你有没有想过,软件开发也是一种工程作业,绝不仅仅是写代码,还...
  • r8HZGEmq
  • r8HZGEmq
  • 2016年08月30日 17:11
  • 227

gradle和maven区别

Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境...
  • jueane
  • jueane
  • 2015年12月23日 00:16
  • 4746

Gradle篇--gradle和maven有什么用?分别有什么区别?

作者:EZLippi 链接:https://www.zhihu.com/question/29338218/answer/51293828 来源:知乎 著作权归作者所有。商业转载请联系作者获得授...
  • dongbaoming
  • dongbaoming
  • 2017年01月03日 12:03
  • 282

优化Android Studio/Gradle构建(转自黑马程序员)

使用Android Studio进行开,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这里...
  • DEADFLASH
  • DEADFLASH
  • 2015年09月06日 20:20
  • 2471

Eclipse集成SrpingBoot、svn、Gradle、Jetty、Maven等第三方插件

  • 2017年11月07日 14:00
  • 49KB
  • 下载

eclipse中安装配置maven、gradle以及springboot

  • 2017年12月29日 14:07
  • 899KB
  • 下载

kafka-gradle工程网站证书(repo1.maven.org)

  • 2016年07月11日 20:05
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gradle和Maven区别(转自zhihu
举报原因:
原因补充:

(最多只允许输入30个字)