maven高级(详细).

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Maven高级(详解)传统开发回顾•收集依赖构件到CLASSPATH•编写源代码、配置信息•Javac编译•单元测试•产品打包、发行•代码共享、储存,以及版本控制经常遇到哪些问题?严重依赖IDE?主要内容Maven介绍、安装、常用命令Eclipse下Maven项目开发坐标与依赖多模型开发常用插件和自动化部署内部仓库使用生成站点Maven高级主题Maven介绍•Maven是一个项目管理工具,它包含了一项目对象模型(ProjectObjectModel),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖管理系统(DependencyManangementSystem),和用来运行定义在生命周期阶段中插件目标的逻辑。•Maven是面向技术层面,针对Java开发项目管理工具,它提供了构建工具所提供功能的超集,除了构建功能之外,Maven还可以管理项目结构、管理依赖关系、生成报告、生成Web站点、有助于团队成员之间的交流与协作。指导开发:提供了Java项目的最佳开发实践,自由开发项目骨架而可自动生成项目结构。自动编译:不仅仅只像Ant自动编译,还包括测试,打包,发布,文档生成,项目站点生成……依赖管理:Maven可以方便地管理应用程序依赖,例如第三方依赖、模型依赖无限扩展:插件模式可以无限增强Maven功能,例如通过Tomcat、Jetty插件可以自由控制其服务器。持续集成:鼓励开发者积极提交代码,更早地发现程序错误,在并行开发中稳妥推进。开发协作:更简单和谐的团队协作•开发者通过Maven管理项目从中受益:Maven监管项目生命周期几个重要的过程:compile:编译test:测试package:打包install:安装deploy:发布Maven版本•Maven2完成了对Maven1的重写。重写的首要目的是要提供了强大的Java构建和包含API的项目,允许Maven被植入任何地方,尤其是高级别的产品如IDEs、质量工具、报告工具等这些。Maven2构建生命周期的概念正式化,其比Maven更易扩展;•Maven3在2.x基础上大幅提升性能。可以自动指定父版本,并行生成,更好的完整性报告、多语言生成、更好地支持M2Eclipse…•我们要使用Maven3Maven安装•下载安装包地址:当前版本为3.0•Windows系统下安装:首先需要确认系统中装有JDK(版本1.4+);将压缩包解压到本地磁盘某目录中,该目录则称为安装目录。例如D:\opensource\apache-maven-3.0目录结构:binMaven的运行脚本bootMaven自己的类装载器conf该目录下包含了全局行为定制文件setting.xmllibMaven运行时所需的类库...Maven安装•配置环境变量M2_HOME=安装目录在path变量中增加%M2_HOME%\binMAVEN_OPTS=-XmsNNNm–XmxNNNm(非必要项,可防止内存溢出。其中NNN表示具体的内存数量)•检查安装正确性在命令行提示符下执行:mvn–v能看到Maven和JDK的版本号为安装正确•小试Maven命令mvnhelp:system该命令将会下载help插件并运行它,且打印出Java系统属性和环境变量Maven名词解释•Project:任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,PojectObjectModel)。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成。•POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。•GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。•Artifact:artifact是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则Maven无法找到(识别)它们。•Dependency:为了能够build或运行,一个典型的Java工程会依赖其它的包。在Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。•Plug-in:Maven是由插件组织的,它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。•Repository:仓库。setting.xml•$user.home/.m2/settings.xml为用户范围的配置文件•$M2_HOME/conf/settings.xml为全局范围的配置文件,修改后将影响本机所有用户的配置建议:只修改用户级别的配置,既不影响其它用户,也不影响后期升级。•配置介绍localRepository:自定义本地库路径,默认在$user.home/.m2中interactiveMode:offline:是否每次编译都去查找远程中心库pluginGroups:插件组,例如org.mortbay.jettyproxies:通过代理访问外部库servers:集成认证服务,例如集成Tomcatmirrors:镜像库,可以指定内部中心库profiles:个性配置,需要在Activation标签中激活activeProfiles:表示激活的profileMaven仓库•远程公用仓库Maven内置了远程公用仓库:这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主。•内部中心仓库也称私有共享仓库(私服)。一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。Nexus和Artifactory均可搭建仓库服务器。但后者支持LDAP认证,这样就可以将私有仓库的认证集成到公司已经有的LDAP认证服务器。内部中心库又可以连接第三方库,例如Jboss中心库、Spring中心库,以随时获得最新版本的第三方构件。Maven仓库•本地仓库Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理,通常默认在$user.home/.m2/repository下。自Maven2以后,构件的存储方式通常是groupId/artifactId/version/*.jar修改本地库位置:在$M2_HOME/conf/setting.xml文件的localRepository元素中指定路径,例如:localRepositoryD:/my_repository/localRepository指定五八同城公司内部中心库:Maven常用命令•检测Maven、JDK版本mvn–v或者mvn-version•获取帮助选项mvn–h或者mvn–help•显示详细错误信息mvn–e•创建Java项目mvnarchetype:create-DgroupId=${groupId}-DartifactId=${artifactId}示例:mvnarchetype:create-DgroupId=com.howsun-DartifactId=myApp-Dversion=0.1•创建Web项目mvnarchetype:create-DgroupId=${packageName}-DartifactId=${webappName}-DarchetypeArtifactId=maven-archetype-webapp•创建其它项目(例如SSH、JPA、JSF、Seam…)mvnarchetype:generate然后根据提示选择项目骨架、groupid、artifactid、版本号…Maven3已有上百个项目骨架•转换成Eclipse工程mvneclipse:eclipsemvneclipse:clean//清除Eclipse设置信息•转换成idea项目:mvnidea:idea•编译mvncompile•编译测试代码mvntest-compile•产生Site:mvnsite•测试mvntest//运行测试mvntest-Dtest=${类名}//单独运行测试类•清除mvnclean//将清除原来编译的结果•打包mvnpackagemvnpackage–Dmaven.test.skip=true//打包时不执行测试•发布mvninstall//将项目打包成构件安装到本地仓库mvndeploy//发布到本地仓库或服务器(例如Tomcat、Jboss)•手动添加构件到仓库mvninstall:install-file-Dfile=${jar包文件位置}-DgroupId=${groupId}-DartifactId=${artifactId}-Dversion=${版本号}-Dpackaging=jar-DgeneratePom=${是否同时创建pom文件}•复制依赖构件到相应目录mvndependency:copy-dependencies-DoutputDirectory=${目标目录}-DexcludeScope=${scope}-Dsilent=true示例:mvndependency:copy-dependencies-DoutputDirectory=WebRoot/WEB-INF/lib-Dsilent=true-DincludeScope=runtime•显示一个插件的详细信息(configuration,goals等):mvnhelp:describe-Dplugin=pluginName-Ddetailpom.xml•是Maven项目的核心配置文件,位于每个工程的根目录,指示Maven工作的元数据文件。•节点介绍project:文件的根节点.modelversion:pom.xml使用的对象模型版本.groupId:创建项目的组织或团体的唯一Id.artifactId:项目的唯一Id,可视为项目名.packaging:打包类型,一般有JAR,WAR,EAR等version:产品的版本号.name:项目的显示名,常用于Maven生成的文档。url:组织的站点,常用于Maven生成的文档。description:项目描述,常用于Maven生成的文档。pom.xmldependencies:构件依赖parent:模型继承dependencyManagement:依赖管理reporting:创建报告build:构建repositories:引用第三方仓库licenses:许可POM全景图Eclipse中使用Maven•为Eclipse提供JDK支持Eclipse是运行在JRE之上,但Maven需要JDK的一些支持,需要指定JDK,在Eclipse安装目录中的eclipse.ini文件中增加:-vm${%JAVA_HOME%\bin\javaw.exe}•安装M2Eclipse插件Help-InstallNewSoftware-Workwith-Add核心组件:Name:m2eLocation:扩展组件:Name:m2e-

1 / 65
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功