Gradle篇--gradle和maven有什么用?分别有什么区别?
来源:互联网 发布:libreoffice软件 编辑:程序博客网 时间:2024/04/29 14:24
作者:EZLippi
链接:https://www.zhihu.com/question/29338218/answer/51293828
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/29338218/answer/51293828
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,你要把你的软件发布到生产环境中来产生商业价值,所以,你要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。
虽然两者都是项目工具,但是maven现在已经是行业标准,Gradle是后起之秀,很多人对他的了解都是从android studio中得到的,Gradle抛弃了Maven的基于XML的繁琐配置,众所周知XML的阅读体验比较差,对于机器来说虽然容易识别,但毕竟是由人去维护的。取而代之的是Gradle采用了领域特定语言Groovy的配置,大大简化了构建代码的行数,比如在Maven中你要引入一个依赖:
注意配置从原来的28行缩减至7行!这还不算我省略的一些父POM配置。依赖的groupId、artifactId、 version,scope甚至是classfier,一点都不少。较之于Maven或者Ant的XML配置脚本,Gradle使用的Grovvy脚本杀伤力太大了,爱美之心,人皆有之,相比于七旬老妇松松垮垮的皱纹,大家肯定都喜欢少女紧致的脸蛋,XML就是那老妇的皱纹。
Gradle给我最大的有点是两点。其一是简洁,基于Groovy的紧凑脚本实在让人爱不释手,在表述意图方面也没有什么不清晰的地方。其二是灵活,各种在Maven中难以下手的事情,在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')}
Gradle给我最大的有点是两点。其一是简洁,基于Groovy的紧凑脚本实在让人爱不释手,在表述意图方面也没有什么不清晰的地方。其二是灵活,各种在Maven中难以下手的事情,在Gradle就是小菜一碟,比如修改现有的构建生命周期,几行配置就完成了,同样的事情,在Maven中你必须编写一个插件,那对于一个刚入门的用户来说,没个一两天几乎是不可能完成的任务。
原文:https://www.zhihu.com/question/29338218?sort=created
0 0
- gradle和maven有什么用?分别有什么区别?
- Gradle篇--gradle和maven有什么用?分别有什么区别?
- gradle和maven有什么用?分别有什么区别?[转载来源于知乎]
- gradle和maven有什么区别?
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别 .
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
- asp.net中,<%#%>,<%=%>和<%%>分别是什么意思,有什么区别
- IMEI和IMSI有什么区别啊。分别是什么意思?有什么实际用途。
- MySql表中字段为Null 和 空('') 有什么区别, 分别有什么影响?
- volatile到底有什么用?和regist有什么区别?
- 点阵图和矢量图分别有什么后缀
- @synthesize和@dynamic分别有什么作用?
- TCP和UDP分别有什么优缺点
- ZCMU—1400
- Linux命令——uname
- 采用oracle 11g过程发邮件 和群发邮件
- 共享内存和消息传递
- 复选框拼接
- Gradle篇--gradle和maven有什么用?分别有什么区别?
- flume配置-生产环境下 Taildir Source to kafka Sink
- Java设计模式1:设计模式概论
- Java设计模式2:简单工厂模式
- 类的初始化顺序
- Android Studio 如何混淆打包
- string 字符串使用 - 字符处理方法
- Java设计模式3:工厂方法模式
- WebSphere Application Server 更新web.xml的问题以解决有些应用在tomcat环境下可以跑,更新到was上失效的问题