最近在学习如何使用maven,做了一个demo(基于S2S整合),总结一下与大家分享,期待与大家讨论以期快速进步。 
一、maven介绍 
1、maven是什么 
http://maven.apache.org/
官方解释:Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。 
2、使用maven有什么好处,解决什么问题 
jar统一管理了: 
如果建立了一个本地的jar仓库,那么所有人都是从仓库里面下载jar,拷贝项目时只需要copy几K的源码即可!其次,依然是仓库,使得每个人的jar版本都是一致的,不会出现因为版本不同,引起的莫名其妙的错误。
项目的自动化: 
只需要mvn package命令,在eclipse里面,看run里面,只需要选择就行了!它会自动的从编译,测试开始,一直到打包,自动的运行,保证你的包没有问题。 
我们在做多个不同的Java项目时,每个项目所用到的库文件基本都是大同小异的,通常的做法是每个项目下面都会复制一份这些库文件,甚至会把这些库文件都提交到vss上去,这样带来的问题不仅是增大了项目占用的硬盘空间,而且也使包管理很混乱。 
我们可以这样查看jar包的依赖关系,是不是很爽?!
 
 
还可以单元测试覆盖率报表: 
 
 
2、helloword 
1、下载Maven 附件中的maven3.jar 解压到任意目录 
2、安装eclipse插件m2eclipse 
方式一:在线安装 更新地址是:http://m2eclipse.sonatype.org/sites/m2e
方式二:本地安装 help-->install new softeware-->add-->name填写maven-->archive..-->jar:file:/../m2e.zip!/-->ok
安装完成重启eclipse,在Window-->Preferences-->Maven下配置 
 
 
禁用eclipse启动时更新maven index 主要是每次eclipse启动时都更新很烦人 
 
 
添加自己的maven 
3、新建maven项目 
按照下图步骤 
 
 
 - groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。譬如在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp. 
- artifactId定义了当前Maven项目在组中唯一的ID,groupId为com.googlecode.myapp的例子中,你可能会为不同的子项目(模块)分配artifactId,如myapputil、myappdomain、myappweb等。 
- version指定了项目当前的版本——1.0SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.0、1.1SNAPSHOT、1.1、2.0等。 
- name元素声明了一个对于用户更为友好的项目名称
点击Finish完成 
4、maven项目结构 
下图为基于maven项目结构,这里跟我们以前的项目结构很不一样,以前的项目结构约定俗成的只有两块 一个src 一个webRoot,当然这些都可以随意配置,比如WebRoot有的叫WebContent 

这里maven倡导约定优于配置,maven的约定就是以下目录结构
src/main/java 下存放java类
src/main/webapp 下存放页面文件(需要手动创建)
src/main/resources 下存放资源文件
src/test/java 下存放单元测试代码
src/test/resources 下存放测试资源文件 
5、添加jar包 
只需维护pom.xml
比如添加struts2-core
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.0.11.2</version>
</dependency> 
我在172.20.66.230上部署了一个maven仓库,访问地址http://172.20.66.230:8081/nexus/ 
maven会根据pom.xml中的配置访问230的仓库下载对应的jar source 以及doc,下载到哪?这要看maven3/conf/settings.xml 55: 
<localRepository>F:/Maven3/repository</localRepository> 
6、编写代码 
附件中有一个struts2+spring 的demo,解压然后import eclipse 
在项目名上右键 run as -->Run Configurations 
 
 
按图配置,点击Run即可。浏览器中访问http://localhost:8080/MavenSSH/ 
Maven运行的生命周期 
 =========================== 
 -  以上是一个简单的例子,只是用它获取依赖的jar包 。maven还有很多诸如项目管理方面的功能,比如文档编制、发布管理、配置管理... 
-  第一个次运行项目会比较慢,因为要下载jar包。 
-  MavenSSH.rar是一个struts2与spring集成的例子,页面用到了sitemesh div+css 也值得学习 
-  项目debug是运行在jetty(类似于tomcat的容器)中。