gradle和maven区别

gradle和maven区别Gradle 和 Maven 都是项目自动构建工具 编译源代码只是整个过程的一个方面 更重要的是 你要把你的软件发布到生产环境中来产生商业价值 所以 你要运行测试 构建分布 分析代码质量 甚至为不同目标环境提供不同版本 然后部署 整个过程进行自动化操作是很有必要的 整个过程可以分成以下几个步骤 编译源代码运行单元测试和集成测试执行静态代码分析 生成分析报告创建发布版本部署到目标环境部署传递过

Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。

整个过程可以分成以下几个步骤:

  • 编译源代码
  • 运行单元测试和集成测试
  • 执行静态代码分析、生成分析报告
  • 创建发布版本
  • 部署到目标环境
  • 部署传递过程
  • 执行冒烟测试和自动功能测试

如果你手工去执行每一个步骤无疑效率比较低而且容易出错,有了自动化构建你只需要自定义你的构建逻辑,剩下的事情交给工具去完成。

虽然两者都是项目工具,但是maven现在已经是行业标准,Gradle是后起之秀,很多人对他的了解都是从android studio中得到的,Gradle抛弃了Maven的基于XML的繁琐配置,众所周知XML的阅读体验比较差,对于机器来说虽然容易识别,但毕竟是由人去维护的。取而代之的是Gradle采用了领域特定语言Groovy的配置,大大简化了构建代码的行数,比如在Maven中你要引入一个依赖:

 
          
          
            2.3 
           
          
          
           
           
             com.google.code.kaptcha 
            
           
             kaptcha 
            
           
             ${kaptcha.version} 
            
           
             jdk15 
            
           
           
           
             org.springframework 
            
           
             spring-core 
            
           
           
           
             org.springframework 
            
           
             spring-beans 
            
           
           
           
             org.springframework 
            
           
             spring-context 
            
           
           
           
             junit 
            
           
             junit 
            
           
          

然后我将其转换成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://javaforall.net/199842.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 下午12:05
下一篇 2026年3月20日 下午12:05


相关推荐

  • 嵌入式存储器分类

    嵌入式存储器分类嵌入式存储模式讲解

    2026年3月19日
    2
  • 汇编语言入门教程_python语言必背代码

    汇编语言入门教程_python语言必背代码本文转载自:http://www.hack520.org/huibian转载地址:https://blog.csdn.net/ivan_zjj/article/details/76146481本讲座以汇编初学者或对汇编一点也不了解的读者为对象,汇编高手不属于该范围,但强烈建议高手指导并增补、修改本文。2任何读者可以跟此贴,提出疑问,或解答其中的问题,但对于所有跟贴,水贴、内容有错、毫…

    2022年4月20日
    54
  • SpringCloud SpringCloud与Dubbo的区别

    SpringCloud SpringCloud与Dubbo的区别(1)SpringCloud与Dubbo的服务治理框架全局性对比(2)最大的区别:SpringCloud抛弃了Dubbo的RPC通信,采用了基于HTTP的REST方式。严格来说,这两种方式各有优劣,虽然从一定程度上来说,后者牺牲了服务调用的性能,但是也避免了RPC带来的问题,并且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸协议,不存在代码的强依赖性,这在强调快速演化稍…

    2022年5月29日
    37
  • list的五种去重方法

    list的五种去重方法面试中经常被问到的list如何去重,一般是口述,不需要代码体现,这个时候,思维一定要清晰,可以罗列出集中去重的方法,以展现你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固下面,我就将五种方法逐一展现新建一个list数组:Listlist=newArrayList();list.add(26);list.add(39);list.add(5)…

    2022年5月9日
    57
  • 适合于初学者—软路由全探索系列(一):探索 VMware 虚拟机旁路由安装及设置

    适合于初学者—软路由全探索系列(一):探索 VMware 虚拟机旁路由安装及设置软路由系列:VMware虚拟机旁路由配置全过程一、背景知识1、路由器2、软路由3、旁路由二、旁路由的网络配置及特性1、网络配置2、网络特性三、OpenWrt旁路由虚拟机安装1、安装准备一、背景知识1、路由器路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议,因特网使用的TCP/IP协议。这样,路由器可以分析各种不同类型网络传来的数据包的

    2022年5月22日
    176
  • R语言实现文本挖掘和tagxedo词云可视化技术

    R语言实现文本挖掘和tagxedo词云可视化技术本文将通过 KNIME R 语言和 tagxedo 三个工具来实现文本挖掘和词云可视化技术 体验一下舆情分析的魅力 一 数据导入数据源 2014 年 10 月 2015 年 7 月的飞信群全部聊天记录 图一原数据示例通过 KNIME 进行原始聊天记录文件的结构化转换 提取文件中发言人 发言时间和发言内容三个字段 并保存为 csv 文件

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号