论坛首页 入门技术论坛

Maven和Ant相比好在哪儿?

浏览 8910 次
该帖已经被评为新手帖
作者 正文
   发表时间:2006-07-21  
最近在学习Maven,很想知道在项目开发中,什么时候用Maven,什么时候用Ant?
   发表时间:2006-07-21  
ant只是一种类似于批处理的工具,makefile的性质,maven会强迫你建立和接受它的一套规范,用哪个取决于你的团队的习惯
0 请登录后投票
   发表时间:2006-07-21  
转贴www.matrix.org.cn 上的 maven和ant的比较

第一:每次和别人说maven的时候,很多会认为是全新的东西而不肯放弃ant。其实,ant脚本是可以直接运行在maven中的。

如果要说maven和ant有什么差别,我觉得最大的差别就是在于maven的编译以及所有的脚本都有一个基础,就是POM(project object model)。这个模型定义了项目的方方面面,然后各式各样的脚本在这个模型上工作,而ant完全是自己定义,显然maven更胜一筹。

第二:Maven对所依赖的包有明确的定义,如使用那个包,版本是多少,一目了然。而ant则通常是简单的inclde 所有的jar。导致的最终结果就是,你根本无法确定JBoss中的lib下的common-logging 是哪个版本的,唯一的方法就是打开 META-INF 目录下MANIFEST.MF。估计JBoss迟早会转向Maven的。

第三:Maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。这一切都是自动的,而ant需要自己定义了。这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码,小得很,而反之,ant的发布则要把所有的包一起发布,显然maven又胜了一筹。

第四:maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode reference,等。而ant都需要自己去写。试试 maven site 的效果。

第五:maven目前不足的地方就是没有象ant那样成熟的GUI界面,不过mavengui正在努力中。目前使用maven最好的方法还是命令行,又快又方便。



最后,总结一下,转向maven会为你节省更多的时间。
0 请登录后投票
   发表时间:2006-07-22  
clark 写道

第三:Maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。这一切都是自动的,而ant需要自己定义了。这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码,小得很,而反之,ant的发布则要把所有的包一起发布,显然maven又胜了一筹。

第四:maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode reference,等。而ant都需要自己去写。试试 maven site 的效果。


就说第三条,看起来很好。实际的效果是,你下载了基于maven的项目源码后,基本没法编译。因为很多包下载不了,或者版本不对。越老的项目越有可能无法编译。

第四条也没有吸引力,因为这些用ant写很方便,找个例子改改,也不过几分钟而已。

所以总的来说,我没看出转移到maven能够多大程度提高我的工作效率,反而有可能浪费学习时间。
0 请登录后投票
   发表时间:2006-07-22  
我们公司用maven管理项目, 感觉非常不错,, 提供了许多插件, wtp + Maven
0 请登录后投票
   发表时间:2006-07-22  
弄弄项目么ant已足够,要maven这种复杂东西来干什么出了问题还找个半天
0 请登录后投票
   发表时间:2006-07-22  
ylt 写道
clark 写道

第三:Maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。这一切都是自动的,而ant需要自己定义了。这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码,小得很,而反之,ant的发布则要把所有的包一起发布,显然maven又胜了一筹。

第四:maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode reference,等。而ant都需要自己去写。试试 maven site 的效果。


就说第三条,看起来很好。实际的效果是,你下载了基于maven的项目源码后,基本没法编译。因为很多包下载不了,或者版本不对。越老的项目越有可能无法编译。

第四条也没有吸引力,因为这些用ant写很方便,找个例子改改,也不过几分钟而已。

所以总的来说,我没看出转移到maven能够多大程度提高我的工作效率,反而有可能浪费学习时间。


也说第三条,你遇到的问题大概是从网上下的用 maven 的项目,可是作为自己公司的项目,用同一个中央仓库会带来很大的便利,不会到处找各个组件包,会很快找到需要的版本。如果自己管理的话会很麻烦!

也说第四条,maven 就是基于 ant 的。
0 请登录后投票
   发表时间:2006-07-23  
用ant确实遇到过不同版本jar造成麻烦的问题。看过ant的代码,根本问题出在ant最终要调用java.exe来运行class(java和junit task都是这样),而只要是用java.exe,就只有指定一个classpath这个选择,没办法处理复杂情况。
所以问题其实是出在这两个task上面。

不知道maven是怎么解决这个问题的?大概是自己做一个executor,而不是直接调用java.exe。
0 请登录后投票
   发表时间:2007-04-23  
路过,学习中
0 请登录后投票
   发表时间:2007-04-23  
个人 ANT ,团队maven
ANT 的 批处理 速度快!
MAVEN 的 规范 好!
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics