转 :http://cc.msnscache.com/cache.aspx?q=5879089626553&lang=zh-CN&mkt=zh-CN&FORM=CVRE3
一直以来,沉浸的ant的成就中,我也没有对项目资源的管理提出更高的要求,也许本身也是项目接触的原因。罱捎诠驹谧蚴褂胮ortal技术,而且是用开源的jetspeed.我当时听了一大跳,说那么大的企业级应用怎么能这么草率的选择开源的东西(虽然我对开源这东西很喜欢)。没有办法了,领导命令下来,做兵的只能埋头苦干了。一开始碰到的是项目的编译问题。说jetspeed是基于maven描述的
。
晕~!maven是什么东西,看来真的是孤陋寡闻了。以前一直是eclipse的平台下开发,加上ant工具,对项目的创建,开发,发布,文档生成都很方便。第一次听到这东西很纳闷,心里骂到,这群人是不是吃了没事干啊。可是骂归骂,事情还得做。老方法,第一步google,第二步找到官方站点。我才奇怪,apache每天都上怎么就没有注意的这东东呢。咳,看来rimen我真的很懒了,懒得连举手之劳的事情都不做了~。言归正传,从实际的项目出发。我的目的很简单,就是能够建立jetspeed项目,能够让他在eclipse进行开发。在我心里就有了如下的问题:
1.maven是什么东西
2.maven和ant由什么区别,maven和现有的IDE工具有什么关系
3.maven的主要过程和原理
4.怎么利用maven进行项目的开发和管理
经过一天的努力,查询了一些相关的资料,发现有价值的中文资料不多,最全的还是apache上的doc文档。不过都是老外的文字,要知道我最痛恨的就是那些仅有线条没有寓意的文字了。不过为了工作也为了自己,咳,没有办法了,重洋眉外一下了,大家不要骂我^_^。但是这里还是推荐一篇对初学者比较有价值的文章,matrix上的:http://www.matrix.org.cn/resource/article/43/43661_Maven.html 也是从英文翻译过来的,咳,国人啊,加油啊~!
开始解开那几个问题了.
第一个问题很简单,它就是一个工具,仅仅是一个工具,至于什么工具下面问题就可以体现了。它的原始想法就是为了简化jakarta螺旋式项目的构建,解决项目之间jar依赖的共享。往往伟大的发明都是来自于解决某些人的懒惰,看当初java就是,服了那些老外了,什么都想的出,我也很懒,我也发现在eclipse开发多个项目的时候管理jar之间的版本很麻烦,可是我就想不出这个东西,任命了。
我相信大家只要开发过java程序的人,或多或少都会接触到ant的东东,怎么说呢,ant其实只能说一个脚本解析器,它对任务的处理还得依赖于外部的工具。这就不得不想到makefile这东西了,在以前开发c程序的时候,为了管理c项目的各种资源包括原文件和类库,对编译工具提供了一个make工具。我个人觉得ant就是make的java版本,错了莫怪。至于maven,那可不是一言两语可以概括的。不过我们可以重程序和源码中抽身出来,想象自己是个pm或者一个architecture来观察一个项目或一个软件产品。它提供很多的基础构件,特别是对j2ee系统,每个组件都可以看成一个宏观上的资源。我们从软件工厂的角度出发,它里面保护了机器设备(external jars,tools,plugins ),生产原料(jar,src,config file,databse),产品(ear,war,jar,doc,config file 等)。下面我们要管理这些东西,叫一个人(老总)取管理,我看他在高的工资也不会干,因为他知道钱有命赚没命花,同时也为了考虑可发展道路,他不会这么干的。所以在maven中引入了plugin的概念。这个plugin管理的东西是上面的说的构件,这样我们必须就有一东西来记录这些东西,不然它怎么知道这是不是它的管辖范围,这就是通过project.xml文件进行定义,它是基于pom元数据结合xml技术进行描述。当然有了被管理的对象,工厂必须有其业务规则,不然它也运作不起来,这就是通过plugin.jelly进行定义,利用jelly脚步语言进行构建每一个管理的目标。这样老总一句话(maven命令),加上目标名,他就会找到相应的plugin进行根据它定义的规则进行处理。这仅仅是从宏观上的描述,真的的原理还必须参考相关的文档进行。这里面提出几个概念大家可以注意一下,maven plugin,jelly脚本,pom元数据,软件工厂等。还有一点就是和目前流行的IDE工具例如eclipse,instillj,jbuider,netbeans IDE 等工具的关系。以eclipse为例,严格来说maven和eclipse应该是风马牛不相及的东西,如果硬要把这个两个东西来过来说的话,那也只是人为强加的因素。但是可以肯定的作为常用的软件,如果说maven创建的项目,如果不能在eclipse中开发,这可能就失去了这些工具的原来意义,这也许就是他们之间的唯一联系。首先maven和eclipse对象项目资源描述元数据都是不同的,当然现在有mavenide(maven workshop)等工具来保证这些元数据之间的转换和同步。其次eclispe和maven之间的功能和职责不同,maven基本上不用来进行源码的开发,这样用eclipse和maven结合来开发确实可以减少很多工作量。
3.maven的主要原理我想没有比它doc上将的清楚。我想说的就一点,一开始我总用ant的观点去理解它,总觉得少了很多东西。其实maven最大的成功在于简化了面向过程的任务管理。你知道定义资源,maven用基于插件的目标方式来完成构建。当然你也可以想ant一样定义自己特殊的目标,你也可以把自己项目的目标制作成通用的插件。
4.maven的项目开发,通过默认的模板新建一个maven项目.它会生成项目的各种资源和目录,例如src,conf等.然后你可以通过maven的IDE插件生成相应的IDE项目,例如maven eclipse.
其实我也只是用它来编译jetspeed.目前越来越多的项目基于maven的方式发布,我们可以通过maven的插件把它转换成自己适应的IDE项目进行开发.基于它对项目管理强大功能,对资源和项目版本管理的统一性,我相信会有越来越多人会选择它来做项目管理工具,特别是团队开发.
posted on 2007-02-12 12:18
小石头 阅读(382)
评论(0) 编辑 收藏 所属分类:
maven、ant