Appium环境配置笔记1--使用Maven解决包依赖

上一篇安装文档描述了在Appium环境配置时介绍了Maven的安装和配置,而事实上Maven对于使用Appium来说并不是必须的,它只是方便我们管理整个Java测试项目而已。

在此之前并没有用过Maven,百度百科给出的定义如下:

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具

Maven这个单词来自于意第绪语,意为知识的积累,最早在Jakata Turbine项目中它开始被用来试图简化构建过程。当时有很多项目,它们的Ant build文件仅有细微的差别,而JAR文件都由CVS来维护。于是Maven创始者开始了Maven这个项目,该项目的清晰定义包括,一种很方便的发布项目信息的方式,以及一种在多个项目中共享JAR的方式。

在初步使用的过程中Maven给我最大的印象是帮助我们很方便的解决了包依赖的问题,其办法是通过设置Maven的项目配置文件pom.xml实现的。实例如下:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   
  5.   <groupId>majcit.com</groupId>  
  6.   <artifactId>AppiumDemo</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <packaging>jar</packaging>  
  9.   
  10.   <name>AppiumDemo</name>  
  11.   <url>http://maven.apache.org</url>  
  12.   
  13.   <properties>  
  14.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.   </properties>  
  16.   
  17.   <dependencies>  
  18.     <dependency>  
  19.       <groupId>junit</groupId>  
  20.       <artifactId>junit</artifactId>  
  21.       <version>4.11</version>  
  22.       <scope>compile</scope>  
  23.     </dependency>  
  24.       
  25.     <dependency>  
  26.       <groupId>org.hamcrest</groupId>  
  27.       <artifactId>hamcrest-all</artifactId>  
  28.       <version>1.3</version>  
  29.       <scope>compile</scope>  
  30.     </dependency>  
  31.     <dependency>  
  32.         <groupId>io.appium</groupId>  
  33.         <artifactId>java-client</artifactId>  
  34.         <version>LATEST</version>  
  35.         <scope>test</scope>  
  36.     </dependency>  
  37.   
  38.   </dependencies>  
  39. </project>  

当我们往该文件上面添加一个dependency的session,然后ctrl+s保存的时候,Maven就会自动帮我们把需要的Jar包和对应的依赖包下载配置好。下载的位置就是安装文档里面配置的Maven的Repository路径。


以上面pom.xml的hamcrest为例子,添加该session后,maven就会自动帮我们准备好相应的jar包,不需要我们手动去查找和安装,所以这一点是非常方便,也是用maven给我印象最深刻的一个地方。



这些包Maven安装好后我们就可以直接在代码中引用了,不需要特别的配置。


最后提醒我们需要使用appium进行测试自动化,可千万要记得把appium对应的客户端给安装上,如使用的是java客户端,那么我们就记得在pom.xml里面添加以下的dependency就好了,切记切记:

  1.   <dependency>  
  2. <groupId>io.appium</groupId>  
  3. <artifactId>java-client</artifactId>  
  4. <version>LATEST</version>  
  5. <scope>test</scope>  
  6. lt;/dependency>  

Note:dependency里面各个选项的意思:

groupIdartifactIdversion这个三组合标示依赖的具体工程,而且这个依赖工程必须是maven中心包管理范围内的。如果碰上非开源包,maven支持不了这个包,那么则有三种方法处理:

1.本地安装这个插件install plugin例如:

	mvn install:install-file -Dfile=non-maven-proj.jar -DgroupId=some.group -DartifactId=non-maven-proj -Dversion=1

2.创建自己的Repositories并且部署这个包,使用类似上面的deploy:deploy-file 命令3.设置scope为system,并且指定系统路径

dependency里面的classifier,用于区分从同一个pom编译出来的但是内容不同的同名包,例如同一个工程编译出两个artifact,一个支持jdk1.5一个支持jdk1.4,那么就可以使用这个来命名为jdk15和jdk14来区分,它如果出现在包名中,那么它必须跟在版本号后。还有一种情况是将一个工程的一些次要artifact附到主要artifact中,就可以使用这个来区分,例如一个工程产生source,javadoc,class三种东西,那么就可以使用不同的classifier来分别标识这些东西 
dependency里面的type,默认为jar,类型,常用如:jar,ejb-client,test-jar,可以设置plugins中的extensions值为true后在增加新类型
dependency里面的scope,指定classpath,可以为:compile(默认的,compile scope在所有classpaths内有效,这些dependencies将会传播到项目中。provided:指示jdk或者某个容器可以提供他,它只在compilation和test的classpaths有效,而且不会传播的。runtime:指示这个dependency在编译过程是不必要的,但是执行需要,在test和runtime的classpaths有效,在compile的classpaths无效。test:指示这个dependency在一般程序运行是无效的,但是在test的compilation和execution是有效的,system则跟provided类似,但是这种dependency必须人工明确地制定。这种依赖不会在repository中查找。
dependency里面的systemPath:只在dependency的scope声明为system的时候才有用除,否则,build的过程将会失败。路径必须是绝对的,所以最好使用property来声明机器的特定路径。
dependency里面的optional:如果工程本身是一个dependency那么就标记为optional,例如X需要A,A需要B,那么X只需要optional的B,则B在X中就是optional声明的了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值