Maven 的皮毛

自己捣鼓了一个月,以为自动化会比开发简单很多,就不经意的飘飘然起来。其实不然,如果你单纯只是想写几个 case,往手机上一丢,在不懂的人面前耀武扬威一番,那的确不是难事。

WebElement login = driver.findElement(By.name("登录"));
login.click();

对于我这种啥也不懂,啥也不会的人来说,搭建一个 appium+java+maven+junit 的环境,也只能照葫芦画瓢。但在后续碰到问题,就彻底傻 X 掉了。。。
以上算我自我这些天反省的过程吧。

一、我眼中的 Maven
其实在搭建环境之前,我还确实去扫过一遍什么是 Maven: Maven 是基于项目对象模型 (POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
完全看不明白。。以下是我自己在解决用例执行中报错这个问题上对 Maven 的理解了,Maven 有一个大仓库,里面有很多我们需要依赖的库文件。其中有一个中央仓库,需要在线下载,然后本地有一个本地仓库,再就是默认的./m2/repository 有个临时仓库。项目的 pom 文件中的各个库都依赖这里。如果版本不对,可以在线更新,可以下载到本地,再导入临时仓库中去,以供我们的使用。

二、问题
如果我的环境一点问题都没,我肯定不会那么早的去了解 Maven。在 4.4 号晚上执行用例的时候。出来一个 Error,如下:
Matchers's signer information does not match signer information of other classes in the same package
开始我一直以为是我的方法没用对,参数有问题。后来群里的大神说明显是环境问题,结果发现我的 junit 是 3.8.1 的,可是 JUnit4.4 才引入了 Hamcrest 框架。所以我就踏上了更换 Junit 版本之路。

三、安装 Maven
在网上的各种教程里,第一句话都是检查 Maven 环境是否可用,在 cmd 下执行如下命令:

mvn -v
然后回显的结果是:

Apache Maven 3.3.1 (cab6659f9874fa96462afef40fcf6bc033d58c1c; 2015-03-14T04:10:27+08:00)
Maven home: E:\adt-bundle-windows-x86\adt-bundle-windows-x86-20130917\apache-maven-3.3.1\bin\..
Java version: 1.7.0_45, vendor: Oracle Corporation
Java home: E:\Program Files\Java\jdk1.7.0_45\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 8", version: "6.2", arch: "x86", family: "windows"

然后我一执行,就是:

E:\jar>mvn -v
'mvn' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

这种情况显然是 windows 下的环境变量没配置好,于是乎开始百度,链接在文末。

maven 环境变量设置

wondows

①.下载
开源网址:http://maven.apache.org/
下载网址:http://maven.apache.org/download.html

②.Windows 下面的安装
下载最新版:apache-maven-3.3.1-bin.zip
解压到你想保存的目录,比如:D:\

③.Maven2 的安装很简单,主要是设置环境变量:
1) maven_home=d:\apache-maven-3.3.1
2) PATH=%maven_home%\bin
注:PATH 变量已存在,将该值添加到现有变量中即可

④.测试 maven 是否成功,前提确保 JAVA_HOME 环境变量存在并正确设置,确保%JAVA_HOME%/bin 目录在 Path 路径中,最后再执行 mvn -v 肯定是万无一失了。

⑤.环境配置好了,我们还需要在 eclipse 中将 maven 安装路径添加进来。
添加之前,检查 eclipse 的 maven 插件是否安装成功:Window --> Preferences
如果没安装成功,可以看另一篇总结,或者直接百度。

⑥.在 Preferences 中,有一项 Installations,点击 Add 按钮,选到你本机安装 maven 的路径值。
然后点击 UserSettings,选择点击右侧的 Browse 按钮,选到你 maven 的 setting.xml 配置文件,然后点击 OK,这样就完成了 eclipse maven 插件的配置。

四、更新库文件
我的环境确实被我搞好了。但我自己还是不知道怎么好的。诶,惭愧啊!下面三种方式,是我在百度上搜索的,仅供参考,,链接在文末。

其实三种方式有一个共同点,都是需要在项目文件夹的 pom.xml 中添加。那么是什么 pom 呢?

pom 作为项目对象模型。通过 xml 表示 maven 项目,使用 pom.xml 来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和 licenses,项目的 url,项目的依赖性,以及其他所有的项目相关因素。

首先我们都要在 pom.xml 中添加(修改)需要下载(更新)的 jar 包。如下,

前提 1:

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit-dep</artifactId>
  <version>4.11</version>
</dependency>

有些同学会问,我这个 grouoId、artifactId 和 version 是哪里获取的?
http://search.maven.org/#browse 这个是 Maven 的中心仓库,我们可以在里面搜索需要更新或者安装的库,里面已经提供了 pom 文件的格式,我们只要照着写就 OK 了。可以采用 eclipse 中自带的添加 pom 文件库的方式,Add 指定的 Group Id、Artifact Id、Version 即可。

方式一:前提 1 的基础上,再 CMD 命令窗口进入到 pom.xml 的路径下执行:(或者 eclipse 的 Project 下也有 clean,并会自动 install,需要在 Project 下勾选 Bulid Automatically)

mvn clean
mvn install

方式二:也是需要前提 1 的基础上,再 CMD 命令窗口进入到 junit 的 jar 包的目录下执行

mvn install:install-file -Dfile=junit-4.11.jar -DgroupId=junit -DartifactId=junit-dep -Dversion=4.11 -Dpackaging=jar
方式三:不需要前提条件,直接在 pom.xml 中添加如下语句:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit-dep</artifactId>
    <version>4.11</version>
    <systemPath>绝对路径\junit-4.11.jar</systemPath>
</dependency>

最后再执行用例的时候,奇迹般的成功了。。。可是我也不知道到底哪步生效了。(因为过程太曲折,捣鼓了 2 个来小时。)

五、Maven 常用命令

其实使用 eclipse 的同学,在 eclipse 中将 Maven 和 eclipse 相关联,就不需要输入以下命令,以免在不了解 Maven 的情况下,越弄越乱,eclipse 上右键项目,在 Maven 中有 update 的操作,在导航栏的 “project” 下也存在 clean 的命令,eclipse 一般会自动编译和更新最新的依赖库,只要你的 pom 文件正确清晰。

把 cvs 项目转换成 Eclipse 项目只要使用 Maven 的 Eclipse 插件就能做到: (在 CMD 窗口中)

mvn eclipse:eclipse
其实 Maven 的 Eclipse 插件也有把 Eclipse 项目转换成 Maven 项目的命令,通过命令:(在 CMD 窗口中)

mvn eclipse:clean
也可以通过如下命令查看帮助

mvn eclipse:help

特别说这两句命令是因为我在这里也踩坑了。导致 eclipse 中原先手动导入的 jar 包都没了,以致所有的文件都报错了,需要重新导入。

六、参考文献
Maven 安装:
maven 环境变量设置
eclipse maven plugin 插件 安装 和 配置
更新库文件方法:
Maven 如何手动添加依赖的 jar 文件到本地 Maven 仓库
maven 自导远程下载包,maven 常用命令
Maven 常用命令:
Maven 常用命令及常见知识在项目中的实际运用 - 不断更新中

七、完结
总结写的很仓促,我觉得文字描述问题事小,很可能上面的论述中存在很大的问题,会误导大家对 Maven 的理解。那就太尴尬了。希望大家及时指正我,我也及时更新,一来可以让我正确的理解,二来也为了不误导后来加入论坛的兄弟姐妹们。


↙↙↙阅读原文可查看相关链接,并与作者交流