`
juvenshun
  • 浏览: 1588849 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

为什么要用Maven?

阅读更多

这里整理了一段MSN群中网友Arthas的精彩讲解:

 

来自群聊天记录
Alex_Zhang 说:
我觉得maven比起ant来说还是差距很大,至少在灵活性上。maven非要靠那些插件


Juven 说:
是的,如果自定义程度非常高,ant更灵活


Alex_Zhang 说
那为什么还要用maven?是否因为它有自动生成站点,自动下载依赖包,版本管理等功能?难道就这些吗?中央库,有什么意义,就为了统一管理JAR包?难道每次打包,要让客户去下载jar包,才好?
还有就是复制一个文件到另外一个文件夹都要去找个插件?这是不是有些小题大做了?


Juven 说:
Alex:如果有1,000个包,你手工去管理就不行了
把项目放大,放多,再来对比Maven和Ant


China jo.. 说:
功能有重叠的地方,但是ant,和maven的侧重点不一样啊。是在需要的话,也可以maven调用ant啊。


Arthas 说:
你所在的公司如何开发一个新的项目?(这里我就专指Web项目了)


Ant+Ivy的组合对包进行依赖管理可以是另一种选择


好,定好要使用Spring,定好iBatis,定好Tapstry


Jar 包哪里找?公司里估计没人能把Spring, iBatis, Tapstry所使用的jar包一个不漏的找出来。以前的做法是,先到Spring的站点去找个 with-dependencies,去iBatis把所列出来的都拉下来,去Tapstry把 tutorial里的jar包全搞上,不管3721,commons包全拉下来,管它用不用,行,还要用xfire,得,都他妈给我搞下来……
哇,项目还没开发,WEB-INF/lib下成千上万(夸张手法,切记)的,没有版本号的,除了名字不同外其它都相同的,版本冲突的,根本用不上的……哎,一个字,真的超乱的哦


项目要用dom4j,听说还有个jdom,都要了


反正是宁多勿缺


公司开始的时候都这么搞,后来在开发过程中不断的发现问题:冲突,版本不对,项目体积过大


于是好一点的公司就开始从中筛选,不断改进Web项目模板;坏的公司啥都不管,以后还是直接把之前搞的都扔进去,管他用不用,指不定还要把现在流行的都扔进去。


好一点的公司的筛选过程在后续的项目中不断前进,但依然痛苦:谁分得清这么多Jar包哪个和哪个依赖,哪个和哪个冲突?我不可能为了开发一个项目就去把所使用的框架,相关资源都背熟吧


上面进的就是,依赖管理


很久很久以前……(注意,作者对自己夸张的手法比较骄傲)

Ant打包非常的流行,但不是公司里的每个员工都会编写Ant脚本,所以会写Ant脚本的那些个人,会被认为是公司里很Niubility的人。


Ant 打包,无非做的就是,创建个把目录,往这些个目录里放些个把文件,再把项目里那些个源代码javac到指定的创建的个把目录中的一些,然后 copydir, fileset, classpath, ref, target, 最后最Niubility的就是 jar, zip, war,哇,项目打包成功了


Ok,项目结束了,发给客户的时候,还不忘得意的提示一下客户:使用Ant一下就把项目Build出来了


项目经理发话,兄弟们,新项目来了,XXX,你来写Ant

是,保证完成任务

Ok,create new, file, build.xml, <?xml verion....*><project......></project>

target clean, delete;
target compile;
target zip;


他没有发现

在他写的那么多的Ant里,有多少是重复劳动

又有多少在一个又一个的项目里重现


你写个Ant,不就是 clean, compile, package吗!你所在的公司的项目结构每次都不同吗?(这里的不同是指“翻天覆地”的)

既然都差不相同,甚至完全相同,为什么要重新写ant?,


好,你说,那我就复用Ant,向上司提议:“以后就用我这个Ant吧,只要公司的WEB项目遵循我指定的项目结构的话,这个Ant通用了”。


哇,进步啊,“同事们,公司需要这样的人才啊,相信大家会继续努力,为公司的明天而努力”!!


新来的读研的同事举手:“老大(项目经理),使用Maven吧,这个在国外很流行,比Ant好用”,
你心里急了:不可能,Ant无敌


虽然我们使用Maven要使用到这个plugin那个plugin,但是要想到,全世界人都在用这个plugin,你都不用写什么东西……


为什么没人说:“我自己写的Java代码最灵活,所以我不用Spring,不用Hibernate,我自己NEW,我自己JDBC“
 

《Maven权威指南》中第一章:介绍Apache Maven 也详细比较了Maven和Ant,有兴趣的朋友可以看一下。

 

14
4
分享到:
评论
5 楼 wmj007 2011-12-14  
在使用了mvn时,我没确认,是否可以把项目都依赖那些JAR包区分出来吗,文中描述的乱糟糟的情况我也遇到,如何只把项目中不依赖的包删除,项目太大了
4 楼 yifeng 2008-12-12  
说的不错,顶下
3 楼 dearshor 2008-11-21  
简言之,maven是一个软件工程管理工具,ant只是一个build tool,它们根本就不是一个级别上的东西。

maven是out-of-the-box(开箱即用)的;而ant是原生态的,什么都要你去再加工。
2 楼 xl515331 2008-10-10  
很实在的 评论

1 楼 Caixiaopig 2008-10-09  
Arthas的说法,正是很多公司的真实写照,这一点我深有同感。
我始终认为任何东西的流行都有其道理,当然也不排除有其缺点,就看能不能把它放在最适合的地方。
就maven而言,标准化是其追求的核心思想。就像ROR的出现让大家发现约定俗成的东西,你可以说它是保守的、不灵活的,但它却是高效的。

相关推荐

    maven安装maven安装maven安装maven安装maven安装

    maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...

    chm版本Maven教程

    使用Maven创建Web应用程序项目 Maven POM Maven 构建生命周期 Maven 构建配置文件 Maven存储库 Maven插件 Maven创建Java项目 使用Maven构建和测试Java项目 Maven外部依赖 Maven项目文档 Maven项目模板 Maven快照 ...

    maven3.0 maven3.0

    maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0

    Maven 命令Maven 命令Maven 命令

    Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令

    Maven搭建Grpc项目详细流程附加grpc—java简单demo

    1、什么是Maven? Maven是一个项目管理工具,主要用于项目构建,依赖管理,项目信息管理。 2.下载及安装 下载最新版 Maven:apache-maven-3.2.1-bin.zip。官网下载:http://maven.apache.org/download.cgi.(本人...

    开源工具Maven3.9.4版本压缩包

    Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven...

    Maven全版本资源,Maven 3.0.5-3.8.5,每个版本包含4个文件,Maven3全资源打包下载,Maven全集

    共7个版本资源,分别为: apache-maven-3.0.5 apache-maven-3.1.1 apache-maven-3.2.5 apache-maven-3.3.9 apache-maven-3.5.4 apache-maven-3.6.3 apache-maven-3.8.5 每个版本包含4个文件: apache-maven-3.8.5-...

    maven 3.5.2 maven 3.5.2 maven 3.5.2

    maven 工具 maven 工具 maven 工具 maven 工具 maven 工具

    maven 3.8.8 解压安装版

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

    maven教程-maven教程-maven教程

    maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程

    maven历史版本下载

    maven

    maven使用

    maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用maven使用...

    apache-maven-3.8.5

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

    教你如何给eclipse安装maven插件

    教你如何给eclipse安装maven插件,废话不多说,有图有真相

    使用Maven构建多模块项目

    使用Maven构建多模块项目

    Maven常用命令 Maven Maven学习

    Maven常用命令 Maven Maven学习

    apache-maven-3.8.6.zip

    apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-...

    maven使用文档,maven使用文档

    maven使用文档,maven使用文档 很不错的文档

    maven API maven API

    maven api

    maven搭建使用详解

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

Global site tag (gtag.js) - Google Analytics