日期:2014-05-20  浏览次数:20634 次

各抒己见:MAVEN比ANT好在哪里
以前一直用Ant,最近准备上Sonar这个开源的代码质量管理平台,跟MAVEN关系很大,
准备看看,第一印象是:
哇!
好复杂!

同时用过两种工具的同仁们,希望不吝赐教,讨论一下:

1、MAVEN是真复杂,还是只是看起来复杂?
2、MAVEN比ANT好在哪里?

谢谢!

------解决方案--------------------
我大部分的工作都是用maven来做的,少量是ant,说说自己的感想。

maven搭建工程很快,不需要特殊外挂什么的,直接就可以上手工作;而ant起步就比较麻烦,需要写一大堆东西。也就是说,maven预设了一些方便的功能,而ant只能自己写。

maven要想修改默认设定比较麻烦,maven1还好点,是用maven.xml来控制,maven2全部集成到plugin里,麻烦;ant全都在build.xml里,创建的时候虽然工作量大,但修改起来就比较方便。

maven对于第三方库文件支持比较好,自动下载存储,还能添加到IDE的工作路径里,对于库文件的管理和团队开发帮助都很大。这个有用的功能导致了工程的移植特别方便,不用进行特殊配置,只要运行maven就可以自动配置好工程的开发环境;ant在这方面没发现有什么特长,工程移植到其他电脑上时配置和调试很麻烦。

maven外挂丰富,降低工作繁重程度;ant还是基于手写。比如maven和ant都有自动封装打包的功能,不过maven有许多现成的外挂,添加进pom.xml就可以使用,方便,相比之下ant还是手工劳动程度比较大。

maven和ant学习起来都有一个过程,不过ant比maven直观些,毕竟XML一看就能明白,而maven的功能都是基于外挂,所以不太好理解,不过一旦理解maven的原理之后也很容易上手。

其实maven和ant干的活和能实现的东西都差不多,就看你喜欢用哪个。

个人的一点浅见,供LZ参考。
------解决方案--------------------
探讨一二,也就是说以前写的不管用咯,唉,好严格。

我还是觉得,如果上层推不动,maven2这种纯构建的东东就用不起来。你说让一个刚毕业的,连软件开发流程的同志搞maven2,有点儿难哦,

至少他要知道maven2是做什么的,每个phase都是用来做什么的,为什么test要放在package前面,为什么要有integration-test,为什么要区分version进行依赖。为什么目录结构区分main和test,下级目录为什么又要保持java和resource分开,为什么要统一将生成的文件放到target下。

如果了解了这些,可以用ant写一个功能与maven2相近的脚本出来,虽然build.xml会稍大一些。不过灵活完全可以定制。

不是说ant不好,你看spring都是用ant编译的,你看他们写了多少脚本?

最后,我的感觉呢,是这样的:

你如果自己写个小工具玩玩,ant既灵活,运行又快。
如果这个东西需要与人分享,或者希望达到一种团队内部的标准,那么用maven2吧,它就是标准化的一个范例。你看多少apache项目都在用maven2,学会maven2的好处就是可以很快看懂这些项目的结构,用最快的速度把一个项目构建起来,减少沟通的壁垒。

所以,你如果在企业内部,用不用maven2都看你自己的爱好了,如果你学习开源,那还是赶快学学吧。