Ant、Maven、Gradle

参考书籍:

《实战Gradle》

Context:

一般java开发都是用的Eclipse等的IDE,创建项目后文件的结构就有了,比如src,bin,res,libs目录、包名等了;运行点击run as就ok;依赖第三方jar包放到libs下,然后加到class路径里。

然而这背后是怎么实现的呢?如果我想定制这个流程呢?就比如我们的APP,A项目依赖于B项目打包后生成的插件,运行时必须把以前手机目录下的B项目jar包删掉,才会用新的。然后每次手动 B项目签名、A项目运行、删除手机缓存的jar包、运行A项目,一次无所谓,一天来个几十次,就让人疯了。

我就想怎么定制呢?然后就看了构建工具.


共同点:

这三种都是JAVA常用的构建工具,从Ant、Maven、Gradle依次演化。

构建:1.编译源代码-----》2.拷贝class文件到指定目录----》3.组装构件

然后我以构建工具认可的形式,控制这个流程。比如生成class到指定目录、java文件源码放在那里。


不同点:

Ant:

优点:使用XML语言来表达构建过程,有层次性,而且很灵活。

缺点:没有默认值,每个人的构造可能都不一样。我是把class文件生成到gen文件夹下,你可能是生成到bin下。而且缺乏依赖管理,比如用的Gson等第三方库还得自己下载,为了弥补这个引入了Ivy。xml用来表示逻辑的话就崩溃了。构建脚本默认名称是build.xml

	<target name ="init">
		<mkdir dir="build'/>
	</target>
	<target name="compile" depends="init">	
		<javac srcdir="src" destdir="build"/>
	</target>

Maven:

优点:有默认的配置,项目的布局了src/main/java...;有版本管理, 如Maven仓库,只要写组织名、工件(比如jar包)名和版本 就可以自己下载。(所以国内有事很坑爹,Android有的仓库被天朝封锁,就下不来工件了)

缺点:难以定制,要自己写什么插件

下面....表示省略掉了,

<project xmls="http://......."
			....>
		<modelVersion>4.0.0</...>
		<groupId>com.mycompany.app</...>
		....
		<dependencies>
			<dependency>
			<groupId>junit..
			<artifact>junit...
			<version>4.11...
			<scope>test...
		...


Gradle:

优点:在Ant的灵活配置和Maven的约定之间取到了一个平衡。采用Groovy脚本语言,可以完全使用Java的语法和类。版本管理上只要写库的表示,就可以自己下载。构建脚本名默认是build.gradle。完美的兼容Maven和Ant已有的构建文件。
apply plugin:‘java'
		...
		dependencies{
		testCompile 'junit:junit:4.11'
		}

而且groovy语法简直就是碉堡了,这里就不介绍了。


有时候我也感慨啊!外国的技术社区发展那么成熟,构建工具都进化这么快,而我有的同事java工作5、6年还不知道Maven。最近还在看《敏捷软件开发》其中关于软件项目的理念,我们真是差的不是一星半点。其中有句“最好的构架、需求和设计出自于自组织的团队”,只这一句我们就没戏。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值