基于?Maven2+Eclipse+WTP+m2eclipse?
开发?Java?EE?应用程序?
谢超良?Jimmy.Shine@Gmail.com?
Sep?20,2010?
一、?Maven?
l?
什么是Maven??
Maven是标准、存储格式以及一些软件用以管理和描述项目。它为构建、测试、部署项目定义了一个标准?的生命周期。它提供了一个框架,允许遵循?Maven?标准的所有项目,方便的重用的构建逻辑。Maven?项?目存在的?Apache?软件基金会,是一个开源社区,它开发的软件工具,基于一个通用的软件对象模型?(Project?Object?Model),也就是POM。?
l?约定大于配置?
Maven遵循约定大于配置的原则。?
通过给项目提供默认的行为来减少不必要的配置。?
l?POM?
在一个Maven项目中,通过声明POM来指定项目的相关信息。?
Maven对于项目的唯一标识条件:?
Group?ID,?artifact?ID,?version(简称GAV)
1?
l?Maven项目的结构?
一个Maven的项目包括如下结构:?
其中:?
src存放源代码,target存入的是编译后的,pom.xml是Maven用来描述项目的文件。?main中存放用来发布至生产环境的代码及配置,test中存放测试时候使用的代码及配置。?java中存放java代码,resource中存放配置文件。?一个web项目结构如下:?
一个web项目中增加了一个webapp,用来存放web页面代码。?
l?Maven的生命周期?
Maven默认的生命周期阶段包括:
· · validate?-?validate?the?project?is?correct?and?all?necessary?information?is?available
compile?-?compile?the?source?code?of?the?project
2?
· · · · · ·
test-?test?the?compiled?source?code?using?a?suitable?unit?testing?framework.?These?tests?should?not?require?the?code?be?packaged?or?deployed package?-?take?the?compiled?code?and?package?it?in?its?distributable?format,?such?as?a?JAR.
integration-test?-?process?and?deploy?the?package?if?necessary?into?an?environment?where?integration?tests?can?be?run
verify?-?run?any?checks?to?verify?the?package?is?valid?and?meets?quality?criteria
install?-?install?the?package?into?the?local?repository,?for?use?as?a?dependency?in?other?projects?locally
deploy?-?done?in?an?integration?or?release?environment,?copies?the?final?package?to?the?remote?repository?for?sharing?with?other?developers?and?projects.?
Maven2.2的一个完整的阶段包括:?
validate,generate-sources,process-sources,generate-resources,process-reso?urces,compile,process-classes,generate-test-sources,process-test-sources,?generate-test-resources,process-test-resources,test-compile,test,prepare-?package,package,pre-integration-test,integration-test,post-intgration-tes?t,verify,install,deploy?生命周期阶段?validate?generate-sources?process-sources?generate-resources?process-resources?compile?process-classes?generate-test-sources?process-test-sources?描述?验证项目是否正确,以及所有为了完整构建所需要的信息是否可用?生成所有需要包含在编译过程中的源代码?处理源代码,比如过滤一些值?生成所有需要包含在打包过程中资源文件?复制并处理资源文件至目标目录?编译项目的源代码?后处理编译生成的文件,?例如对Java类进行一些代码增强?(bytecode)?生成所有包含在测试编译过程的测试源码?处理测试源码,比如过滤一些值?generate-test-resources?生成测试需要的资源文件?process-test-resources?复制并处理测试资源文件至于测试目录?test-compile?test?prepare-package?package?pre-integration-test?integration-test?post-integration-test?Verify?Install?Deploy?编译测试源码至测试目标目录?使用合适的单元测试框架运行测试?在真正的打包之前,执行一些准备打包必要的操作?将编译好的代码打包成可分发的格式,如JAR,WAR,EAR.?执行一些在集成测试运行之前需要的动作,如建立执行测试需要的环境?处理包并发布至集成测试可以运行的环境?执行一些在集成环境运行之后需要的动作,如清理集成测试环境?执行所有的检查,验证包是有效的,符合质量规范?安装包至本地仓库,以备其它的项目做为依赖使用?复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正?式的发布相关)?l?如何执行Maven?1.?安装Maven?
(1)?
下载Maven,并解压
3?
(2)?在系统环境变量中设置M2_HOME?
(3)?将%M2_HOME%/bin?加入至系统环境变量path中。?
(4)?在DOS窗口中,输入mvn?–version,若显示版本号相关信息,则安装成功。?
2.?配置Maven?
Maven的配置是通过%M2_HOME%/conf/setting.xml来进行配置。?
setting.xml用来配置一些全局性的配置,包括代理服务器的地址,本地的存储库的地址等。?常用的配置包括:?(1)?
本地Maven存储库的地址(localRepository)?
用来定义本地的?Maven?的库的存储地址,即从?Maven?仓库中下载的文件的存储的位
4?
置。?
如:?
Maven服务器地址(server)?在发布构件至本地的情况下需要。?
如:?
镜像服务器(Mirror)?
定义镜像服务器来替代指定的仓库,即通过匹配相关的远程的仓库的id从镜像的服务?器上查找构件,而不从远程的服务上面查找。?
如:?
配置(Profile)?
Profile用来定义仓库的地址和插件仓库的地址,用来发布、获取构件。?如:?
(5)?
激活配置?
指定哪些配置被激活。
5?