通向架构师的道路 第十九天 使用maven构建Spring工程

一、前言

上次大家拿了我上传的工程后,有些人自己通过spring3,struts1.3,hibernate3的download的包自行去装配jar包到工程的 WEB-INF\lib目录下。有些是通过我上传的alpha_lib包把里面的jar文件一股脑的copy到了工程的WEB-INF\lib目录下去。

有时经常还会发生少包了,ClassNotFound这样的错误,或者是一些因为缺包还引起的各种莫名奇妙的错误,呵呵,是不是够 折腾的啊?

尝过苦头了,才知道幸苦!那么我们有没有一种更好的方式,比如说:

我下了博主的工程,打一条命 令或者是在eclipse里build一下,这个工程需要的jar文件自动跑到我的工程里呢?

有的!这就是maven!!!

因 此今天就要讲利用maven来构建我们的工程以及如何在eclipse里跑由maven构建出的web工程(网上这方面资料不全,因此个人总 结了经验一并分享给了大家)。

二、传统构建与使用maven构建

传统模式:

《第十八》天中的这个工程的 构建就是一个标准的传统模式的构建,为大多数人所接受。

它把所有的jar文件都摆放在工程的WEB-INF\lib目录下并使用ant来打包和发布. 这样做的好处是简单、直观、明了。坏处是 :构建该工程的人除非很有经验,否则就会出现因为少jar文件或者因为jar文件重复而在布署或者是在运行时引起各种各样的稀 奇古怪的错误。

有甚者喜欢把一个下载的spring3.1和struts1.3下载包里的的lib目录下所有的jar不管三七二十一全部copy到工程的WEB- INF\lib目录下,有提示需要覆盖他也就选个“ALL”。

我曾看到过一个工程,没几个JSP,CLASS,工程达287mb之大,其中286mb为jar文件,彼彼皆是log4j-1.3.8.jar,log4j- 1.4.2.jar这样的重复的jar文件的存在。

有了junit3.8竟然还发觉工程里有junit4.x的包。。。晕啊。

MAVEN模 式:

而使用maven构建工程时就不太会有这样的事情发生了,大家初学者可以把maven看成是一个“自动取包机”。怎么 解释呢,举个例子来说:

你要装载a.jar,但a.jar依赖b.jar,而b.jar又依赖c.jar和d.jar,如果只是2,3级的依赖关 系构建者可以记得住,但如果这个依赖关系达6级,7级以上时那么按照传统的构建模式当你发觉一个目录里有abcdefghijk这些 个jar文件时,你一般为了避免出错总是一古脑的把所有的jar文件copy进工程,对吧?

但实际这些个jar文件里只有 a.jar,b.jar, c.jar才是你需要的。

而maven干这个是它的特长,当你告诉maven你要下载a.jar文件时,它会发觉a.jar 依赖于其它的jar文件,它就会把你指定的jar文件与相关的依赖文件全部拿下来,不会多拿(90%情况下)。

就好比你要 拿org.springframework.web.struts-3.0.0.RELEASE.jar这个文件,但其实它还需要用到asm,collection, bean-util等,那么 你只要告诉maven我要拿org.springframework.web.struts-3.0.0.RELEASE.jar这个文件,其它的依赖的相关的jar包会自动“下 载”到你的工程中去.所以当我拿 maven重新去构建那个286mb的工程时,工程所有的功能一点不影响,靠着maven对jar包的自动 依赖整个工程从286mb缩成了21mb,哈哈哈哈。。。。。。搞毛啊原来的那帮人在!

三、使用Maven

3.1 使用前的 准备步骤

准备步骤一:

请下载最新的maven2,如:apache-maven-3.0.3-bin.tar.gz(我现在使用的就是这个版 本),我也放到我的CSDN的“资源”中去了.

准备步骤二:

确保你的eclipse为WTP版并且升级了mavenfor eclipse,即在你的eclipse->window->preference里有maven的选项:

最好的办法就是去eclipse的官网下载一个eclipsewtp版(http://download.eclipse.org/webtools/downloads/),然后升 级,可能升级过程会比较长,5-6小时也是有可能的(笔者家里的网速是20MB光纤)。但是第一次升完级后,以后每周没事就让 你的eclipse去update一下也是有必要的,必经这东西是你以后吃饭的家伙,维持它永远是最新版本是个好习惯。

时间: 2025-01-12 14:19:23

通向架构师的道路 第十九天 使用maven构建Spring工程的相关文章

通向架构师的道路 第二十五天 SSH的单元测试与dbunit的整合(下)

3.4使用框架 我们准备两份测试用数据 test_del_table.xml文件 <?xml version="1.0" encoding="UTF-8"?> <Tables> <table>t_student</table> </Tables> test_insert_table.xml文件 <?xml version="1.0" encoding="UTF-8&quo

通向架构师的道路(第二十二天)万能框架spring(四)使用struts2

一.前言 SSH有了,现在我们要把我们的struts层从原来的1.3替换成struts2.x,引入了struts2.0后我们会发觉我们的代码和框架的变化还是不小的 二.Struts2的好处 1)在struts2的方法里,一切变量是线程安全的,而原有的struts1不是的; 2)在struts2中如果你声明了如下这样的代码:     privater String studentName=""; public void setStudentName(String studentName)

通向架构师的道路(第二十天)万能框架spring(二)maven结合spring与ibatis

一.前言 上次讲了Struts结合Spring并使用Spring的JdbcTemplate来搭建工程框架后我们面临着jar库无法管理,工程发布不方便,jar包在工程内太占空间,jar包冲突,管理,甚至漏包都问题.于是我们在讲"万能框架spring(二)"前,传授了一篇番外篇,即讲利用maven来管理我们的jar库. 从今天开始我们将结合"万能框架spring(一)"与番外篇maven来更进一步丰富我们的ssx框架,那么今天讲的是使用iBatis3结合SS来构建我们的

通向架构师的道路(第二十一天)万能框架spring(三)之SSH

一.前言 我们有了Spring+JdbcTemplate和Spring+iBatis并结合maven的基础,搭建一个SSX这样的框架现在就和玩一样的简单了,今天我们将搭建一个使用Struts1.3,Srping3, Hibernate3的SSH1的开发框架,大家跟着我一步步走,会发觉在程序跑通后自己再动手搭建一遍这个框架,只需要30分钟. 二.SSH框架 仔细看这个框架,稍微有点不一样了. 1)      Spring3是通过一个hibernate template来和hibernate的dao

通向架构师的道路 第二十六天 漫谈架构与设计文档的写作技巧

前言: 这篇是一篇番外篇,没有太多代码与逻辑,完全是一种"软"技巧,但是它对于你如何成为一名合构的架构设 计人员很重要. 在此要澄清一点,架构师本身也是"程序员",不是光动嘴皮子的家伙们,如果你不是一名程序虽出身 那你根本谈不上也不可能成为一名架构师. 那么架构师还有哪些是作为一名程序员来说不具备的呢? 其中有一项 能力就叫做"文档写作能力". 一.Soft Skill与Hard Skill 作为一名架构师除了是一名资深的程序员外,它还 必须具有

通向架构师的道路 第十五天 IBM Websphere的安装与优化 (二)

5.3 在WAS内布署应用 一般我们使用ear格式在WAS内布署我们的web应用,因此此处和weblogic, tomcat稍稍有点不一样. 为此,我们做了一个ant脚本用于打包我们的ear. 一个ear文件的格式应该如下: myEAR |__ META-INF    |__application.xml |__myWAR.war 可以看到,一个ear文件: 包含一个META-INF目录,在该目录下会有一个application.xml文件. 然后和META-INF目录同级的地方会有一个.war

通向架构师的道路 第二十四天 Oracle性能调优(下)

4.4 Oracle表空间管理 Oracle的表空间文件都放在$ORACLE_HOME/oradata如/opt/oracle/product/10/oradata这样的目录中的 Oracle的表空间支持"热插拨" 即在Oracle运行时发觉表空间不够时可以直接打开Oracle的管理界面来动态给它划一块硬盘空间,或者甚至你又装了一块硬 盘进服务后,Oracle可以把表空间在运行时扩展到新插入的磁盘中.

通向架构师的道路 第二十四天 Oracle性能调优(上)

前言 这次,我们将在Linux下来动手完成Oracle数据库的安装与使用. Oracle本身是可以免费下载的包括 它 的企业版以及被它收购的Weblogic和Sun中的几乎任何东西你都可以拿来下载和使用,不像IBM和Tibco一些其它厂商,只有"试 用版"给你下载,Oracle的东西没有时间限制,你拿来做练习,搭实验环境都是没有任何的问题的. 但是,如果你出了 问题,需要用到Oracle的补丁或者是Oracle的技术支持,这就开始收费. Oracle就是这种"卖Service

通向架构师的道路 第十六天 IBM Websphere与IBM HttpServer的集成

一.IBMWebsphere与IBMHttpServer IBM WebSphere非常强大,几乎可以和任何主流Web服务器集成.其原理和Weblogic与Apache以及tomcat与Apache的集成原理一 致,也是以plug-in(插件)的方式来做应用的. 不过我们今天要介绍的是IBM自带的HttpServer,又称IHS. IHS其实就是一个Apache,IBM拿了Apache过来进行了改造,使得它可以和它的WAS系列产品紧密结合并且可以通过WAS的Admin Console对它进行可视