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

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

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中你必须编写一个插件,那对于一个刚入门的用户来说,没个一两天几乎是不可能完成的任务。



原文:https://www.zhihu.com/question/29338218?sort=created

Gradle、Ant和Maven的比较

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

使用Gradle与Ant实现可配置不同环境的自动打包

一、搭建jenkins环境和配置gradle环境   网上搭建jenkins的教程很多,这里不再赘述,主要说下jenkins中配置gradle环境   点击“Manage Jenkins”   ...
  • mqy1023
  • mqy1023
  • 2016年05月13日 22:00
  • 5447

ant maven Gradle 区别

在过去几年中,Maven已成为Java及Java EE项目事实上的构建工具,没有之一。而最近两年,Gradle获得越来越多的人使用,分走了不少Maven的用户。本文就是讲述怎样把Java EE项目从...
  • LANGZI7758521
  • LANGZI7758521
  • 2016年06月07日 17:25
  • 1241

Java构建工具:Ant vs Maven vs Gradle

创世之初,世上只有Make一种构建工具,后来,其发展为GNU Make。但是,由于需求的不断涌现,码农的世界里逐渐演化出了千奇百怪的构建工具。 当前,JVM生态圈由三大构建工具所统治: Apa...
  • bailyzheng
  • bailyzheng
  • 2015年09月12日 17:49
  • 5144

构建工具演化:ant/maven/gradle

一、ant 一个ant工具所使用的build.xml:                                         ...
  • weixin_38031122
  • weixin_38031122
  • 2017年06月29日 19:28
  • 60

Java工程构建工具ANT与Maven的区别

Ant与Maven也许几乎所有的程序员在程序开发过程中都遇到过,在我的工作过程中ant和maven都用到过,在这里说一下个人感受。 第一家公司开发业务代码,最后打war包采用了ant+hudson的...
  • jek123456
  • jek123456
  • 2016年04月15日 17:07
  • 818

Java构建工具:Ant vs Maven vs Gradle

创世之初,世上只有Make一种构建工具,后来,其发展为GNU Make。但是,由于需求的不断涌现,码农的世界里逐渐演化出了千奇百怪的构建工具。 当前,JVM生态圈由三大构建工具所统治: Apa...
  • napolunyishi
  • napolunyishi
  • 2014年09月18日 11:43
  • 27315

gradle和maven区别

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

Gradle 1.12 翻译——第十七章. 从 Gradle 中调用 Ant

Gradle 提供了对 Ant 的优秀集成您可以在你的 Gradle 构建中,使用单独的 Ant 任务或整个 Ant 构建。事实上,你会发现在 Gradle 中使用 Ant 任务比使用 Ant 的XM...
  • maosidiaoxian
  • maosidiaoxian
  • 2014年11月17日 08:46
  • 6440

Maven和Ant简介以及两者的区别

Maven 一.Maven简介 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 目前,绝大多数开发人员都把 Ant 当作 Java...
  • tianyazaiheruan
  • tianyazaiheruan
  • 2013年10月10日 08:54
  • 18992
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gradle篇--gradle和maven有什么用?分别有什么区别?
举报原因:
原因补充:

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