maven学习整理

一、maven理论

1. 何为Maven

Maven 这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。本书将介绍Maven
这一跨平台的项目管理工具。作为Apache 组织中的一个颇为成功的开源项目,Maven 主要服务于基
于Java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企
业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven 都能大显身手。

2  何为构建

不管你是否意识到,构建(build)是每一位程序员每天都在做的工作。早上来到公司,我们做的
第一件事情就是从源码库签出最新的源码,然后进行单元测试,如果发现失败的测试,会找相关的
同事一起调试,修复错误代码。接着回到自己的工作上来,编写自己的单元测试及产品代码,我们
会感激IDE 随时报出的编译错误提示。
忙到午饭时间,代码编写得差不多了,测试也通过了,开心地享用午餐,然后休息。下午先在昏昏
沉沉中开了个例会,会议结束后喝杯咖啡继续工作。刚才在会上经理要求看测试报告,于是找了相
关工具集成进IDE,生成了像模像样的测试覆盖率报告,接着发了一封电子邮件给经理,松了口气。
谁料QA 小组又发过来了几个bug,没办法,先本地重现再说,于是熟练地用IDE生成了一个WAR
包,部署到Web 容器下,启动容器。看到熟悉的界面了,遵循bug 报告,一步步重现了bug„„快
下班的时候,bug 修好了,提交代码,通知QA 小组,在愉快中结束了一天的工作。

3.不重复发明轮子

   小张是一家小型民营软件公司的程序员,他所在的公司要开发一个新的Web 项目。经过协商,决定使用Spring、
iBatis 和Tapstry。jar  包去哪里找呢?公司里估计没有人能把Spring、iBatis 和Tapstry 所使用的jar  包一个不少地
找出来。大家的做法是,先到Spring  的站点上去找一个spring.with.dependencies,然后去iBatis  的网站上把所有
列出来的jar 包下载下来,对Tapstry、Apache commons 等执行同样的操作。项目还没有开始,WEB.INF/lib 下已
经有近百个jar 包了,带版本号的、不带版本号的、有用的、没用的、相冲突的,怎一个“乱”字了得!

   在项目开发过程中,小张不时地发现版本错误和版本冲突问题,他只能硬着头皮逐一解决。项目开发到一半,
经理发现最终部署的应用的体积实在太大了,要求小张去掉一些没用的jar                  包,于是小张只能加班加点地一个个
删……

   小张隐隐地觉得这些依赖需要一个框架或者系统来进行管理。

   小张喜欢学习流行的技术,前几年Ant 十分流行,他学了,并成为了公司这方面的专家。小张知道,Ant 打
包,无非就是创建目录,复制文件,编译源代码,使用一堆任务,如copydir、fileset、classpath、ref、target,然
后再jar 、zip、war,打包就成功了。

   项目经理发话了:“兄弟们,新项目来了,小张,你来写Ant 脚本!”

   “是,保证完成任务!”接着,小张继续创建一个新的XML 文件。target clean; target compile; target jar; ……  不
知道他是否想过,在他写的这么多的Ant 脚本中,有多少是重复劳动,有多少代码会在一个又一个项目中重现。
既然都差不多,有些甚至完全相同,为什么每次都要重新编写?

   终于有一天,小张意识到了这个问题,想复用Ant 脚本,于是在开会时他说:“以后就都用我这个规范的Ant
脚本吧,新的项目只要遵循我定义的目录结构就可以了。”经理听后觉得很有道理:“嗯,确实是个进步。”

   这时新来的研究生发言了:“经理,用Maven 吧,这个在开源社区很流行,比Ant 更方便。”小张一听很惊讶,
Maven 真比自己的“规范化Ant”强大?其实他不知道自己只是在重新发明轮子,Maven  已经有一大把现成的插件,
全世界都在用,你自己不用写任何代码!

   为什么没有人说“我自己写的代码最灵活,所以我不用Spring,我自己实现IoC;我不用Hibernate,我自己封
装JDBC”?

二、maven安装

4. 将安装文件解压到你指定的目录中,如:

   D:\bin>jar xvf "C:\Users\Juven Xu\Downloads\apache-maven-3.0--bin.zip"

   这里的Maven 安装目录是D:\bin\apache-maven-3.0,接着需要设置环境变量,将Maven 安装配置到操作系统
环境中。

   打开系统属性面板(桌面上右键单击“我的电脑”→“属性”),点击高级系统设置,再点击环境变量,在系统
变量中新建一个变量,变量名为M2_HOME ,变量值为Maven 的安装目录D: \bin\apache-maven-3.0。点击确定,
接着在系统变量中找到一个名为Path的变量,在变量值的末尾加上%M2_HOME%\bin;,注意多个值之间需要
有分号隔开,然后点击确定。至此,环境变量设置完成

这里需要提一下的是Path 环境变量,当我们在cmd  中输入命令时,Windows 首先会在当前目录中寻找可执
行文件或脚本,如果没有找到,Windows 会接着遍历环境变量Path 中定义的路径。由于我们将%M2_HOME%\bin
添加到了Path 中,而这里%M2_HOME%实际上是引用了我们前面定义的另一个变量,其值是Maven 的安装目录。
因此,Windows 会在执行命令时搜索目录D: \bin\apache-maven-3.0\bin,而mvn 执行脚本的位置就是这里。

   明白了环境变量的作用,现在打开一个新的cmd 窗口(这里强调新的窗口是因为新的环境变量配置需要新
的cmd 窗口才能生效),运行如下命令检查Maven 的安装情况:

   C:\Users\Juven Xu>echo %M2_HOME%

   C:\Users\Juven Xu>mvn -v


5.~/.m2

   在讲述该小节之前,我们先运行一条简单的命令:mvn   help:system。该命令会打印出所有的Java 系统属性
和环境变量,这些信息对我们日常的编程工作很有帮助。这里暂不解释help:system 涉及的语法,运行这条命令的
目的是为了让Maven 执行一个真正的任务。我们可以从命令行输出看到Maven 会下载maven-help-plugin,包括
pom 文件和jar 文件。这些文件都被下载到了Maven 本地仓库中。

   现在打开用户目录,比如当前的用户目录是C:\Users\Juven   Xu \,你可以在Vista 和Windows7  中找到类似的
用户目录。如果是更早版本的Windows,该目录应该类似于C:\Document and Settings\Juven Xu\ 。在基于Unix 的
系统上,直接输入cd      回车,就可以转到用户目录。为了方便,本书统一使用符号~                指代用户目录。

   在用户目录下,我们可以发现.m2 文件夹。默认情况下,该文件夹下放置了Maven 本地仓库.m2/repository 。
所有的 Maven     构件(artifact  )都被存储到该仓库中,以方便重用。我们可以到
~/.m2/repository/org/apache/maven/plugins/maven-help-plugins/ 目录下找到刚才下载的maven-help-plugin  的pom  文
件和jar  文件。Maven 根据一套规则来确定任何一个构件在仓库中的位置,这一点本书第6 章将会详细阐述。由
于Maven 仓库是通过简单文件系统透明地展示给Maven 用户的,有些时候可以绕过Maven 直接查看或修改仓库
文件,在遇到疑难问题时,这往往十分有用。

   默认情况下,~/.m2   目录下除了repository  仓库之外就没有其他目录和文件了,不过大多数Maven 用户需要
复制M2_HOME/conf/settings.xml  文件到~/.m2/settings.xml 。这是一条最佳实践,我们将在本章最后一小节详细解
释。

三、eclipse配置maven

6.现在我以Eclipse   3.6 为例逐步讲解m2eclipse  的安装。

启动Eclipse 之后,在菜单栏中选择Help,然后选择
Install  New  Software…,接着你会看到一个Install 对话框,点击Work   with:字段边上的Add 按钮,你会得到一
个 新 的 Add      Repository 对 话 框 , 在 Name   字 段 中 输 入 m2e     ,Location  字 段 中 输 入
http://m2eclipse.sonatype.org/sites/m2e,然后点击OK。Eclipse 会下载m2eclipse  安装站点上的资源信息。等待资
源载入完成之后,我们再将其全部展开,就能看到图 所示的界面:

如图显示了m2eclipse 的核心模块Maven Integration for Eclipse (Required),选择后点击Next >,Eclipse 会自
动计算模块间依赖,然后给出一个将被安装的模块列表,确认无误后,继续点击Next >,这时我们会看到许可证
信息,m2eclipse 使用的开源许可证是Eclipse Public License v1.0,选择I accept the terms of the license agreements,
然后点击Finish,接着就耐心等待Eclipse 下载安装这些模块

最后,关于m2eclipse 的安装,需要提醒的一点是,你可能会在使用m2eclipse 时遇到类似这样的错误:

09-10-6 上午01 时14分49秒: Eclipse is running in a JRE, but a JDK is required
Some Maven plugins may not work when importing projects or updating source folders.

   这是因为Eclipse 默认是运行在JRE 上的,而m2eclipse  的一些功能要求使用JDK,解决方法是配置Eclipse
安装目录的eclipse.ini 文件,添加vm 配置指向JDK,如:

   --launcher.XXMaxPermSize

   256m

   -vm

   D:\java\jdk1.6.0_07\bin\javaw.exe

 

7.eclipse 配置maven web项目

        maven是个项目管理工具,集各种功能于一身,下面介绍maven web项目在eclipse种的配置,并于tomcat集成。配置成功后,可以跟一般的web项目一样调试。

 

一、准备条件

1、安装下载jdk

     这里以jdk1.6为例

 

2、安装eclipse

     到eclipse官网下载 Eclipse IDE for Java EE Developers版本的eclipse

     http://www.eclipse.org/

 

3、安装tomcat6

 

4、安装maven

 

5、安装eclipse maven插件

     这里以在线安装的方式,安装地址为:http://m2eclipse.sonatype.org/sites/m2e

 

二、配置

1、在eclipse中配置jdk安装位置,tomcat安装位置,maven安装位置,为tomcat指定jdk

     在此不详述

2、在eclipse中新建一个maven项目

2-1、新建一个maven项目,选择create a simple project ...

    

 

 

2-2、

点击Next,进入下一个

 

在此窗口下填写group id,artifact id,可以随便写一个,在Packaging中选择war类型

点击下一步,在以下步骤中一直next,直到最后点击finish

 

2-3、

右击项目,选择properites,打开以下对话框

 

 

在此界面右边导航栏选中 Project Facets,点击超链接Convert Faceted from,进入以下界面

2-4、

 

 

 

在Configuration中选择custom

在下方的Project Facet的Dynamic Web Module中选择2.5版本

在java中选择1.6

注意:这些选择可能根据tomcat版本变化而变化,就tomcat6来说选择以上选项是可以的

        此步骤非常重要,只有操作了此步骤,右侧导航栏才会有Deployment Assembly 链接

2-5

接下来点击右边面板的Runtime面板

 

可以看到下方中有tomcat,如果没有,则点击下面的new,新建一个,新建后选中复选框,然后apply,ok

 

 

2-6、

在项目属性面板中的作部导航栏选择Deployment Assembly选项,在右边Web Deployment Assembly

如果看到以下的图示,那么配置就完成了

 

这里解释一下以上文件夹

src/main/java

该文件夹是存放java源码的,发布项目时会将该文件夹下的class文件复制到WEB-INF/classes目录下

 

src/main/resources

该文件夹一般放置配置文件,如xml,properties文件等,其实也可以放置java文件,只是一种约定罢了,发布项目时

该文件夹的文件也会复制到WEB-INF/class中

至于test,有些类似,只不过这些是测试代码,用过maven的应该会知道这一点

 

src/main/webapp

maven中约定是把该文件夹当成是普通web项目中的WebRoot目录,看看右边的deploy path,发布项目时

是发布到根目录/了。该文件夹在建成的maven web项目中,在其内尚没有WEB-INF/classes,WEB-INF/lib文件夹

需要手工建立

 

注意:有时候由于某种原因,你打开的以上视图可能是下面这样的,

 

其实,这样也是可以运行项目,调试项目的,但是,如果你运行该项目的pom.xml文件时就会报错,为什么呢,

因为maven会把src/main/webapp文件当成是普通web项目中的WebRoot,而该你的配置里面(上图)却

没有配置,故而会报错。

怎么办呢,分2步

1、选中 WebContent,remove掉它

2、新建一个,Source文件夹为src/main/webapp,deploy path为 /

点击apply,ok即可。

 

最后还必须将maven库映射到WEB-INF/lib下,具体操作如下,点击add按钮,进入下图

 

选择java build path entries,点击next,进入下图

 

 

 

选择Maven Dependencies,点击finish,最终如下图


 

 

如果不把Maven Dependencies映射到WEB-INF/lib,则在服务端如servlet中用到maven中的库时,则会提示找不到类(虽然你在编写代码时没有红xx,但是运行程序时却会找不到类)

 

 

 

三、运行

在eclipse的server视图中添加你的项目,右键选择的tomcat服务器,选择add and remove,添加刚才新建的web工程,效果如下图

在src/main/java中建立一个servlet,在src/main/webapp中建立一个jsp

 

启动tomcat,访问你的servlet和jsp,在servlet中你可以定断点,可以调试。

 

 8.eclipse导入Maven项目

          在Eclipse project explorer中右击,在弹出框中选择import,得到如下图所示:         

 

      选择Existing Maven Projects,并点击Next,得到如下图所示对话框:

    

 

选择一个已经创建好的Maven项目,并点击Finish。

由此,导入Maven项目成功

 

 

    

9. 运行Maven命令

     

    右击项目,点击Run as,如下图:

 

 

 即可看到有很多现有的maven命令,点击即可运行,并在控制台可以看到运行信息

 如果你想运行的maven命令在这里没有找到,点击Maven build创建新的命令,操作如下图所示:



 

 如下图填入Maven命令,点击Run即可



 

新增的maven命令可以通过如下方式找到,并再次运行:



 

 


clean package

常用命令

        mvn archetype:create 创建Maven项目
  mvn compile 编译源代码
  mvn test-compile 编译测试源代码
  mvn test 运行应用程序中的单元测试
  mvn site 生成项目相关信息的网站
  mvn clean 清除项目目录中的生成结果
  mvn package 根据项目生成的jar
  mvn install 在本地Respository中安装jar
  mvn eclipse:eclipse 生成eclipse项目文件
  mvn jetty:run 启动jetty服务
  mvn tomcat:run 启动tomcat服务


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值