开发部Maven入门培训——2014-01-11目录•1.Maven关键知识点•2.Maven的安装配置•3.用Maven构建项目•4.搭建Nexus私服•5.相关资料1.Maven关键知识点•概念–是一系列构建工具的集合•约定大于配置–Maven项目约定目录如右图:•pom.xml文件–项目对象模型(ProjectObjectModel,POM)•Maven坐标–groupId:artifactId:version,唯一确定一个项目。如:1.Maven关键知识点•本地仓库–存放从中央仓库下载的依赖组件–windows7默认地址:C:\user\xxx\.m2\repository–linux默认地址:~/.m2/repository•中央仓库–centralrepository:Apache官方维护的组件库–组件可升级1.Maven关键知识点•生命周期与对应插件普通javeSE工程的生命周期与对应插件(已由Maven绑定)普通JavaSE工程的Maven坐标:1.Maven关键知识点•超级pom.xml文件–位于lib\maven-model-builder-xxx.jar\org\apache\maven\model目录下–新建的Mavan项目pom.xml文件默认继承它1.Maven关键知识点Maven项目的版本号:•依赖范围:用[]、()、[)、(]区间表示•可选依赖:避免某些组件的依赖传递•传递依赖:1.Maven关键知识点注意:正常的依赖版本号(如3.8.2),表示“3.8.2”最佳,其他版本也可以。而[3.8.2]表示必须3.8.2版本,其他版本不行。例如依赖方向:项目A-项目B-项目C,则项目A对C有传递依赖。1.Maven关键知识点•传递范围对依赖关系的影响:父项目的dependencyManagement/标签:会把依赖版本号散布到其子项目中。子项目不需再指明。1.Maven关键知识点•用Maven构建项目的好处–可自动解决组件依赖问题•类似Fedora的yum和Ubuntu的apt-get工具–其他原因:•本地/中央仓库实现多个项目的jar包集中管理•编译、测试、打包、部署、分发自动化工具•软件轻量级发布;目录•1.Maven关键知识点•2.Maven的安装配置•3.用Maven构建项目•4.搭建Nexus私服•5.相关资料2.Maven的安装配置•首次构建Maven项目:–安装并配置好Java5+–外网http连接2.Maven的安装配置修改Maven主配置文件conf/settings.xml,指定本地仓库位置:配置http代理:2.Maven的安装配置•机器安装Java5以上,并配置好环境变量•下载Maven,解压,配置环境变量:–增加M2_HOME指向D:\apache-maven-3.1.1–把%M2_HOME%\bin变量加入Path变量–查看Maven是否安装成功(cmd下):2.Maven的安装配置配置Eclipse的http代理:Eclipse官方Kepler版本自带M2Eclipse插件:Eclipse中打开Maven视图:2.Maven的安装配置Eclipse里设置Maven安装的路径和settings.xml文件:Eclipse对Maven工程的支持:目录•1.Maven关键知识点•2.Maven的安装配置•3.用Maven构建项目•4.搭建Nexus私服•5.相关资料3.1构建JavaSE项目•结合实例讲解:E:\projects\mvnexbook-examples-1.0\ch-simple\simple创建Maven工程:构建打包:运行:查看有效pom文件:发布站点:3.2定制Maven项目•结合实例讲解:E:\projects\mvnexbook-examples-1.0\ch-custom\simple-weather创建Maven项目,并指明版本号替代默认的snapshot:查看已解决的插件依赖:查看依赖树:$mvndependency:tree忽略测试失败:3.2定制Maven项目连同依赖的组件一起打包:3.3一个简单的Web应用•结合实例讲解:E:\projects\mvnexbook-examples-1.0\ch-simple-web\simple-webapppom.xml中packaging方式改为了war:3.3一个简单的Web应用加入servlet的支持和jetty插件:启动jetty:访问地址:因为原生的servlet标准由Sun/Oracle公司维护,不提供给Maven官方。因此Apache组织的geromino项目重写了一个specs组件,可作为servlet的完美替代品。3.3一个简单的Web应用•增强pom.xml文件:scope/标签中的provided值表示该组件在部署时已经由web容器提供:加入jsp2.0的支持:3.4构建多模块项目•结合实例的E:\projects\mvnexbook-examples-1.0\ch-multi项目的pom.xml简单了解父项目:子项目1(App项目):子项目2(Web项目):3.5构建SpringHibernate项目•结合实例E:\projects\mvnexbook-examples-1.0\ch-multi-spring\simple-parent简单了解。各模块的依赖/继承关系图:3.5构建SpringHibernate项目•在我本地运行失败!(无法解决依赖)项目目录结构parent项目的pom.xml文件3.6Maven最佳实践•优化和重构pom.xml:–依赖归类–多模块vs继承•sonatype.org的Nexus仓库管理器–Maven项目直接请求中央仓库效率非常低!–部署在共享服务器上,可以为中央仓库创建本地缓存,减少网络请求–便于开发团队共享已下载的组件目录•1.Maven关键知识点•2.Maven的安装配置•3.用Maven构建项目•4.搭建Nexus私服•5.相关资料4.搭建Nexus私服•步骤:–下载nexus-latest-bundle.zip,解压,新建NEXUS_HOME环境变量(图1):–注册并启动Nexus服务(图2):图1图2默认地址:,但对IE8.0兼容不好!建议用ff、chrome4.搭建Nexus私服•步骤:–用admin/admin123登录后,设置代理服务器:4.搭建Nexus私服把三个proxy类型的仓库DownloadRemoteIndexes改为true4.搭建Nexus私服•步骤:–修改Maven安装目录settings.xml(图1):–修改Maven项目的pom.xml文件(图2):图1图24.搭建Nexus私服•最新的nexus-2.7.0-06-bundle只支持JDK1.7!•已有项目拆分构建,分为webapp、Spring、Hibernate三个子项目:–降低模块间耦合度–便于维护升级–首先用高级应用系统的minimal测试目录•1.Maven关键知识点•2.Maven的安装配置•3.用Maven构建项目•4.搭建Nexus私服•5.相关资料5.相关资料•Maven插件库:–•Maven中央仓库:–•教程:–Maven权威指南中文版.pdf•教程代码:–mvnex-examples.zip