maven 转 gradle

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

都是自动构建工具,但是完全是两个产品。Maven应该目前在Java企业级开发中占的比重比较大,Gradle是后起之秀,Google的Android Studio主推的就是Gradle。

Gralde吸收了Maven与Ant的优点,可以列举出很多。然而大量的实践与思考发现Maven相比于Gradle的不灵活,正是它的优点,避免了大量聪明的Build Engineer的出现。

1.面向未来,就目前的趋势而言,gradle或者maven正逐渐演化为一种标准。尤其是国际上。比如你去spring官网看demo,它们一般提供基于这两种的源码,还有android开发,很多流行的库,demo演示都是通过gradle搭建的,你不懂gradle就很难跟它们接轨。这显然是固步自封的表现。

2.极细的粒度,给你更大的发挥空间。你用eclipse的run的时候,你并不知道eclipse是怎么执行的,即便你知道,但是不可能轻易结合自己的代码逻辑。举个例子:我需要在run java项目的时候,把flex项目先编译好,放到web目录下。类似于这样,大部分情况下,光靠IDE自己的功能就力不从心了。 但是gradle给了你两个维度的机会,让你能干的更多。 第一 task的dependsOn、finalizedBy 让你可以把各种工作串行连接;第二 绝大多数插件是开源的,也就是用的不爽,你自己可以改,那样就更灵活了。当然这只是冰山一角。

3.协作,一个个build文件,描述项目依赖,插件,显然更具有一致性。再也不需要把那些讨厌的jar包提交到git了,要知道git里面存放二进制简直就是灾难。还有,甚至可以通过gradle跟,非程序员交流,比如你想让美工可以自己测试修改并在项目里面看最终效果。这时候你让她装个idea,估计她会很不情愿。但是,你可以通过gradle,告诉她,把素材覆盖到某某文件之后,只要在控制台来个gradle run,刷新页面就能看到效果了。(仅是个例子,可能不严谨)

4.布道groovy,gradle所使用的语言,也许groovy并不能算是jvm里的屠龙刀,但是也绝对可以算是一把锋利的匕首。相信我,作为一个java程序员,试着在代码中融入groovy,一定乐趣无限。尤其是还能用在android项目。

0

0

0

0

评论(0)

“还没有人发表评论,快去抢占沙发吧”

gradle 的cas 转maven_maven 转 gradle相关推荐

  1. 新建gradle项目时总在下载gradle.zip

    在新建gradle项目时,总会出现download:https://services.gradle.org/distributions/gradle-3.4-bin.zip一直卡在那里不动. 原来是因 ...

  2. gradle 指定java版本_Eclipse使用gradle编译时,使用固定的jdk版本进行编译(修改gradle的jdk编译版本)...

    很多时候我们使用多个版本的jdk,比如说,用的是1.7 ,开发环境用1.8 那么经常碰到编译后的包是1.8版本的,虽然设置了1.7的,因为很多时候我们使用打包工具了. 1.7和1.8有个问题就是1.8 ...

  3. linux 搭建gradle android jenkins打包机器,gradle 依赖 jar问题

    app/build.gradle文件 apply plugin: 'com.android.application'android {compileSdkVersion 25buildToolsVer ...

  4. 各个 Android Gradle 插件版本所需的 Gradle 版本

    下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本. 要获得最佳性能,您应该使用 Gradle 和插件这两者的最新版本. 插件版本 所需的 Gradle 版本 1.0.0 ...

  5. Android之Android studio Gradle sync failed: Unknown host ‘services.gradle.org

    错误描述: Gradle sync failed: Unknown host 'services.gradle.org'. You may need to adjust the proxy setti ...

  6. gradle文件不识别_识别Gradle约定

    gradle文件不识别 通过约定进行配置具有许多优点,尤其是在简洁方面,因为开发人员不需要显式配置通过约定隐式配置的内容. 但是,在利用约定进行配置时,需要注意这些约定. 这些约定可能已记录在案,但是 ...

  7. Gradle学习总结——抓重点学Gradle

    前言 网上关于Gradle的教程很多,但很多都是以"面"切入- 通过大量讲解其用法及其API分类来阐述.但Gradle API使用技巧众多,API更是成千上百,臣妾记不住呀.个人深 ...

  8. 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  9. Gradle - 编译报org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm的问题解决

    Gradle - 编译报org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm的问题解决 参考文章: (1)Grad ...

最新文章

  1. jqgrid自定义列表开发=》实现高级查询
  2. 求一批整数中出现最多的个位数字_C语言经典100例007-求低n-1位的数
  3. 悬崖边上的舞者,记7.2生产数据库灾难事件
  4. 剑指offer之41-45题解
  5. git conifg
  6. Java 8中的5个功能将改变您的编码方式
  7. git idea 图形化_Git大全,你所需要的Git资料都在这里
  8. R-CNN学习笔记5:Faster R-CNN
  9. 「轻阅读」基于 Flink SQL CDC的实时数据同步方案,附视频教程
  10. ExtJS视频教程1(上)
  11. php后门 佛像,给千年佛像做了个CT,结果好吓人
  12. 3.APP推广有哪些渠道
  13. 虾皮入驻后怎么经营才能:快速出单?
  14. Android的5种快捷开关的实现
  15. OpenStack——nove组件部署
  16. Django详细教程(图文)
  17. windows 命令 系统快捷方式
  18. 笨办法学python 粗略笔记(learn python the hard way)
  19. 【Python】司徒卢威函数
  20. 在线YAML转Properties工具

热门文章

  1. 机器人基础原理1_1——机器人概念及发展历程
  2. 12306.cn网站的思考 (整理篇)
  3. 一些常用函数的曲线图及应用简说
  4. Scanpy Umap 3D
  5. pycharm学生认证
  6. Excel复制粘贴列宽的操作
  7. 怎样才能学好一门编程语言?要怎样去学习才算成功?成为一名合格的程序员
  8. HECKTOR2020第二名 Combining CNN and Hybrid Active Contours for Head and Neck Tumor Segmentation in CT a
  9. EXCEL批量给多个单元格里指定字上色其他颜色
  10. android创建文件夹、文件file读、写内容