gradle 的cas 转maven_maven 转 gradle
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相关推荐
- 新建gradle项目时总在下载gradle.zip
在新建gradle项目时,总会出现download:https://services.gradle.org/distributions/gradle-3.4-bin.zip一直卡在那里不动. 原来是因 ...
- gradle 指定java版本_Eclipse使用gradle编译时,使用固定的jdk版本进行编译(修改gradle的jdk编译版本)...
很多时候我们使用多个版本的jdk,比如说,用的是1.7 ,开发环境用1.8 那么经常碰到编译后的包是1.8版本的,虽然设置了1.7的,因为很多时候我们使用打包工具了. 1.7和1.8有个问题就是1.8 ...
- linux 搭建gradle android jenkins打包机器,gradle 依赖 jar问题
app/build.gradle文件 apply plugin: 'com.android.application'android {compileSdkVersion 25buildToolsVer ...
- 各个 Android Gradle 插件版本所需的 Gradle 版本
下表列出了各个 Android Gradle 插件版本所需的 Gradle 版本. 要获得最佳性能,您应该使用 Gradle 和插件这两者的最新版本. 插件版本 所需的 Gradle 版本 1.0.0 ...
- 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 ...
- gradle文件不识别_识别Gradle约定
gradle文件不识别 通过约定进行配置具有许多优点,尤其是在简洁方面,因为开发人员不需要显式配置通过约定隐式配置的内容. 但是,在利用约定进行配置时,需要注意这些约定. 这些约定可能已记录在案,但是 ...
- Gradle学习总结——抓重点学Gradle
前言 网上关于Gradle的教程很多,但很多都是以"面"切入- 通过大量讲解其用法及其API分类来阐述.但Gradle API使用技巧众多,API更是成千上百,臣妾记不住呀.个人深 ...
- 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- Gradle - 编译报org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm的问题解决
Gradle - 编译报org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm的问题解决 参考文章: (1)Grad ...
最新文章
- jqgrid自定义列表开发=》实现高级查询
- 求一批整数中出现最多的个位数字_C语言经典100例007-求低n-1位的数
- 悬崖边上的舞者,记7.2生产数据库灾难事件
- 剑指offer之41-45题解
- git conifg
- Java 8中的5个功能将改变您的编码方式
- git idea 图形化_Git大全,你所需要的Git资料都在这里
- R-CNN学习笔记5:Faster R-CNN
- 「轻阅读」基于 Flink SQL CDC的实时数据同步方案,附视频教程
- ExtJS视频教程1(上)
- php后门 佛像,给千年佛像做了个CT,结果好吓人
- 3.APP推广有哪些渠道
- 虾皮入驻后怎么经营才能:快速出单?
- Android的5种快捷开关的实现
- OpenStack——nove组件部署
- Django详细教程(图文)
- windows 命令 系统快捷方式
- 笨办法学python 粗略笔记(learn python the hard way)
- 【Python】司徒卢威函数
- 在线YAML转Properties工具