您的位置:首页 > 其它

Ant、Maven、Gradle

2015-10-26 23:32 183 查看

参考书籍:

《实战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。最近还在看《敏捷软件开发》其中关于软件项目的理念,我们真是差的不是一星半点。其中有句“最好的构架、需求和设计出自于自组织的团队”,只这一句我们就没戏。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息