您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 自动化测试培训-Maven
光荣之路自动化测试培训-Maven吴老微信公众号:gloryroadtrainqq:845821166www.gloryroad.cn更多测试资讯,请关注光荣之路微信公众号:gloryroadtrain传统开发回顾什么是Maven?Maven是一个采用纯Java编写的开源项目管理工具。Maven采用了一种被称之为projectobjectmodel(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制项目。Maven遵循的是约定优于配置的原则,它的核心插件使用了一组通用的约定,以用来编译源代码,打包可分发等过程。因为你遵循了约定,它已经知道你的源代码在哪里。Maven能做什么?•提供了Java项目的最佳开发实践,自由开发项目骨架而可自动生成项目结构。指导开发•不仅仅只像Ant自动编译,还包括测试,打包,发布,文档生成,项目站点生成自动编译•Maven可以方便地管理应用程序依赖,例如第三方依赖、模型依赖依赖管理•插件模式可以无限增强Maven功能,例如通过Tomcat、Jetty插件可以自由控制其服务器。无限拓展•更早地发现程序错误,在并行开发中稳妥推进。持续集成•更简单和谐的团队协作开发协作Maven仓库(Repository)中央仓库本地仓库企业仓库依赖管理依赖范围依赖性传递依赖相关技巧依赖管理仓库仓库生命周期插件插件与生命周期的绑定测试安装Maven1.(Binaryzip)2.将下载的zip包解压在本地硬盘,例如:d:\安装Maven3.配置环境变量MAVEN_HOME:D:\apache-maven-3.2.3MAVEN:%MAVEN_HOME%\bin(可选)MAVEN_OPTS:-Xms256m-Xmx512m4.在path最前面加上%MAVEN%;验证Maven的安装是否成功运行系统的命令行窗口,在命令行上输入:mvn-version;回车,如看到下面信息表示安装成功:配置setting.xmlC:\DocumentsandSettings\Administrator\.m2用户级别的D:\apache-maven-3.2.3\conf系统级别的修改maven本地资源库的配置,以后maven用到的所有资源文件都会存储到该目录下:localRepositoryD:\eclipse\apache-maven-local-repository/localRepositoryMaven的配置Maven架构概述创建Maven项目1.在命令行上输入:mvnarchetype:create-DgroupId=cn.gloryroad.app-DartifactId=gloryroad-app2.回车3.你是首次运行该命令(goal),maven将要花一些时间去把最新的工具包(Maven把它叫作artifacts)下载到你的本地仓库。Maven的项目结构命令行执行完毕后你将看到maven生成了一个名为gloyroad-app的目录,这个名字就是你在命令中指定的artifactId,进入该目录,你将发现以下标准的项目结构:src/main/java目录包含了项目的源代码src/test/java目录包含了项目的测试代码pom.xml是项目的项目对象模型(ProjectObjectModelorPOM)POM文件pom.xml文件是maven对一个项目的核心配置,这个文件将包含你希望如何构建项目的大多数配置信息,POM大而复杂,掌握常用的配置即可。Goal命令、插件mvnarchetype:create-DgroupId=cn.gloryroad.app-DartifactId=gloryroad-appcreate就是一个goal命令archetype就是一个插件,即具有类似目的的一组goal命令集合常用插件:://maven.apache.org/plugins/maven-antrun-plugin/maven-antrun-plugin能让用户在Maven项目中运行Ant任务。用户可以直接在该插件的配置以Ant的方式编写Target,然后交给该插件的run目标去执行。在一些由Ant往Maven迁移的项目中,该插件尤其有用。此外当你发现需要编写一些自定义程度很高的任务,同时又觉得Maven不够灵活时,也可以以Ant的方式实现之。maven-antrun-plugin的run目标通常与生命周期绑定运行。maven-archetype-plugin,Maven初学者最开始执行的Maven命令可能就是mvnarchetype:generate,这实际上就是让maven-archetype-plugin生成一个很简单的项目骨架,帮助开发者快速上手。可能也有人看到一些文档写了mvnarchetype:create,但实际上create目标已经被弃用了,取而代之的是generate目标,该目标使用交互式的方式提示用户输入必要的信息以创建项目,体验更好。maven-archetype-plugin还有一些其他目标帮助用户自己定义项目原型,例如你由一个产品需要交付给很多客户进行二次开发,你就可以为他们提供一个Archtype,帮助他们快速上手。maven-assembly-plugin,该分发包可能包含了项目的可执行文件、源代码、readme、平台脚本等等。maven-assembly-plugin支持各种主流的格式如zip、tar.gz、jar和war等,具体打包哪些文件是高度可控的,例如用户可以按文件级别的粒度、文件集级别的粒度、模块级别的粒度、以及依赖级别的粒度控制打包,此外,包含和排除配置也是支持的。maven-assembly-plugin要求用户使用一个名为assembly.xml的元数据文件来表述打包,它的single目标可以直接在命令行调用,也可以被绑定至生命周期。Build项目在命令行窗口中,进入到gloryroad-app的目录,执行:mvnpackage执行后的结果:验证编译后的结果在命令行窗口中,在项目下执行命令:java-cptarget/gloryroad-app-1.0-SNAPSHOT.jarcn.gloryroad.app.App出现了,世界闻名的“HelloWorld!”,证明编译成功!什么是Phase?phase是指构建生命周期的一个阶段,构建生命周期是指有序的一系列phase。当给出一个phase,Maven将执行所有的在此阶段前的phase及其自身。执行compile阶段,会执行右边显示的所有阶段:validategenerate-sourcesprocess-sourcesgenerate-resourcesprocess-resourcescompile常用的Phasevalidate:验证工程是否正确,所有需要的资源是否可用。compile:编译项目的源代码。test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。Package:把已编译的代码打包成可发布的格式,比如jar。integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。verify:运行所有检查,验证包是否有效且达到质量标准。install:把包安装在本地的repository中,可以被其他工程作为依赖来使用。Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。clean:清除先前构建的artifacts(在maven中,把由项目生成的包都叫作artifact)。site:为项目生成文档站点。Phase的顺序mvncleandependency:copy-dependenciespackage1.先清除项目2.拷贝依赖3.把项目打包4.在打包之前,会先执行此阶段之前的阶段,如compile,test等。生成站点mvnsite这个阶段生成基于pom.xml配置的项目信息。你可以在target/site目录下看到生成的文档Pom详解1.project是所有pom.xml的根元素:声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,但使用这些属性能够让第三方工具(如IDE中的XML编辑器)帮助我们快速编辑POM。2.modelVersion4.0.0/modelVersion根元素下的第一个子元素modelVersion指定了当前POM模型的版本,对于Maven2及Maven3来说,它只能是4.0.0。Pom详解3.groupId,artifactId和versionpom.xml中最重要的是groupId,artifactId和version三行。这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom或者war都是以基于这些基本的坐标进行区分的。groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联,譬如我的公司是gloryroad,有一个项目为app,那么groupId就应该是cn.gloyroad.app。artifactId定义了当前Maven项目在组中唯一的ID,在前面的groupId为cn.gloyroad.app的例子中,你可能会为不同的子项目(模块)分配artifactId,如:gloryroad-app–util、gloryroad-app-domain、gloryroad-app-web等等。本例中artifactId为gloryroad-appversion顾名思义,version指定了项目当前的版本。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.1-SNAPSHOT、1.0、1.1、2.0等等Pom详解4.name元素声明了一个对于用户更为友好的项目名称,虽然这不是必须的,但我还是推荐为每个POM声明name,以方便信息交流。没有任何实际的Java代码,我们就能够定义一个Maven项目的POM,这体现了Maven的一大优点,它能让项目对象模型最大程度地与实际代码相独立,我们可以称之为解耦,或者正交性。这在很大程度上避免了Java代码和POM代码的相互影响。比如当项目需要升级版本时,只需要修改POM,而不需要更改Java代码而在POM稳定之后,日常的Java代码开发工作基本不涉及POM的修改。主代码packagecn.gloryroad.app;/***Helloworld!**/publicclassApp{publicstaticvoidmain(String[]args){System.out.println(HelloWorld!);}}把项目主代码放到src/main/java/目录下(遵循Maven的约定),而无须额外的配置Maven会自动搜寻该目录找到项目主代码该Java类的包名是cn.gloryroad.app或者cn.gloryroad.app.gloryroad
本文标题:自动化测试培训-Maven
链接地址:https://www.777doc.com/doc-20411 .html