Java接口自动化之Maven工具使用

VOL 190

30

2020-12

今天距2021年1天

这是ITester软件测试小栈第190次推文

点击上方蓝字“ITester软件测试小栈“关注我,每周一、三、五早上 08:30准时推送,每月不定期赠送技术书籍

微信公众号后台回复“资源”、“测试工具包”领取测试资源,回复“微信交流群”、“内推群”一起进群打怪。

本文3862字,阅读约需11分钟

在上一篇Java接口自动化测试系列文章:Java接口自动化之IDEA介绍、永久激活及常用快捷键,主要介绍IDEA优点、如何激活idea工具以及在日常开发中我们常用的快捷键。

以下主要介绍Maven特点、安装配置及Maven仓库。

Maven介绍

1

什么是maven?

Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),反映在配置中,就是一个 pom.xml 文件。是一组标准集合,一个项目的生命周期、一个依赖管理系统,另外还包括定义在项目生命周期阶段的插件(plugin)以及目标(goal)。

当我们使用 Maven 的使用,通过一个自定义的项目对象模型,pom.xml 来详细描述我们自己的项目。Maven 中的两大核心:

  • 依赖管理:对 jar 的统一管理(Maven 提供了一个 Maven 的中央仓库,https://mvnrepository.com/,当我们在项目中添加完依赖之后,Maven 会自动去中央仓库下载相关的依赖,并且解决依赖问题)

  • 项目构建:对项目进行编译、测试、打包、部署、上传到私服等。

2

为什么使用maven?

由于Java的生态非常丰富,无论你想实现什么功能,都能找到对应的工具类,这些工具类都是以 jar 包的形式出现的,例如 Spring,SpringMVC、MyBatis、数据库驱动,等等,都是以 jar 包的形式出现的,jar 包之间会有关联,在使用一个依赖之前,还需要确定这个依赖所依赖的其他依赖,所以,当项目比较大的时候,依赖管理会变得非常麻烦臃肿,这是 Maven 解决的第一个问题。

Maven 还可以处理多模块项目。简单的项目,单模块分包处理即可,如果项目比较复杂,要做成多模块项目,例如一个电商项目有订单模块、会员模块、商品模块、支付模块等等。一般来说,多模块项目,每一个模块无法独立运行,要多个模块合在一起,项目才可以运行,这个时候,借助 Maven 工具,可以实现项目的一键打包。

3

maven有什么特点?

maven的特点如下:

  • 项目设置遵循统一的规则。

  • 任意工程中共享。

  • 依赖管理包括自动更新。

  • 一个庞大且不断增长的库。

  • 可扩展,能够轻松编写 Java 或脚本语言的插件。

  • 只需很少或不需要额外配置即可即时访问新功能。

  • 基于模型的构建 :Maven能够将任意数量的项目构建到预定义的输出类型中,如 JAR,WAR 或基于项目元数据的分发,而不需要在大多数情况下执行任何脚本。

  • 项目信息的一致性站点:使用与构建过程相同的元数据,Maven 能够生成一个网站或PDF,包括您要添加的任何文档,并添加到关于项目开发状态的标准报告中。

  • 发布管理和发布单独的输出 :Maven 将不需要额外的配置,就可以与源代码管理系统(如 Subversion 或 Git)集成,并可以基于某个标签管理项目的发布。它也可以将其发布到分发位置供其他项目使用。Maven 能够发布单独的输出,如 JAR,包含其他依赖和文档的归档,或者作为源代码发布。

  • 向后兼容性 :您可以很轻松的从旧版本 Maven 的多个模块移植到 Maven 3 中。

  • 子项目使用父项目依赖时,正常情况子项目应该继承父项目依赖,无需使用版本号,

  • 并行构建 :编译的速度能普遍提高20 - 50 %。

  • 更好的错误报告:Maven 改进了错误报告,它为您提供了 Maven wiki 页面的链接,您可以点击链接查看错误的完整描述。

Maven安装配置

1

准备工作

Maven是Java 项目,因此必须先安装 JDK。检查是否已经安装jdk,使用命令:java -version

2

maven下载

官方下载传送门:

http://maven.apache.org/download.cgi

根据需要,选择操作系统所对应的maven进行下载。

3

maven安装配置

①下载完成后,解压后目录如下:

②配置maven环境变量。新建系统变量:

变量名:MAVEN_HOME

 变量值:C:\ruanjian\maven\apache-maven-3.6.3

在path里新增环境变量:

%MAVEN_HOME%\bin

cmd打开dos窗口,输入mvn -v,检查maven是否配置成功。


Maven仓库

1

什么是maven仓库?

在Maven的术语中,仓库是一个位置(place),例如目录,可以存储所有的工程 jar 文件、library jar 文件、插件或任何其他的工程指定的文件。

2

为什么使用maven仓库?

没有Maven之前,我们项目依赖的包,会下载下来,统一放到对应项目的lib目录下。同一个包,比如Spring框架的包,项目A要使用,就拷贝一份到项目A的lib目录下;项目B也要使用,那就再拷贝一份到项目B的目录下去。这样下去,你会发现同样的依赖包,需要拷贝N份,这样不仅造成了磁盘空间的浪费,而且也难于统一管理。

有了Maven,基于Maven的坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的。在此基础上,Maven可以在某个位置统一存储所有Maven项目共享的包,而这个统一存放依赖包的位置就是仓库。说白了,Maven仓库就是存放依赖包的地方。

3

maven仓库类型

Maven 仓库有三种类型:

  • 本地(local)

  • 中央(central)

  • 远程(remote)

①本地仓库

Maven本地仓库是机器上的一个文件夹,它在你第一次运行任何 maven 命令的时候创建。

Maven本地仓库保存你的工程的所有依赖(library jar、plugin jar 等)。当你运行一次 Maven 构建,Maven会自动下载所有依赖的 jar 文件到本地仓库中。它避免了每次构建时都引用存放在远程机器上的依赖文件。

本地仓库默认位置在 当前用户名\.m2\repository,当你运行Maven命令,Maven将下载依赖的文件到你指定的路径中。

可以自定义本地仓库位置的,在 conf/settings.xml 中自定义本地仓库位置:

② 中央仓库

Maven中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。

中央仓库的关键概念:

  • 这个仓库由 Maven 社区管理。

  • 不需要配置。

  • 需要通过网络才能访问。

要浏览中央仓库的内容,maven 社区提供了一个 URL:

http://search.maven.org/#browse

使用这个仓库,开发人员可以搜索所有可以获取的代码库。比如要使用testng框架,那么在页面搜索testng。

复制依赖即可:

注意:由于默认的中央仓库下载较慢,因此可以将仓库地址改为阿里巴巴的仓库地址,修改conf/settings.xml文件,保存。

<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

如下所示:

③ 远程仓库

如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。比如,在pom.xml中申明依赖,Maven 将从远程仓库中下载该 pom.xml 中声明的所依赖的文件。

既然存在3个仓库,那么jar包如何查找呢?maven多仓库查找依赖的顺序大致如下:

  •  在本地仓库中寻找,如果没有则进入下一步;

  • 在全局配置的私服仓库(settings.xml中配置的并有激活)中寻找,如果没有则进入下一步;

  • 在项目自身配置的私服仓库(pom.xml)中寻找,如果没有则进入下一步;

  • 在中央仓库中寻找,如果没有则终止寻找。

以上


That‘s all

更多系列文章

敬请期待


ITester软件测试小栈(ID:ITestingA),专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处。

ITester软件测试小栈

往期内容宠幸

1.Python接口自动化-接口基础(一)


2.Python接口自动化-接口基础(二)


3.Python接口自动化-requests模块之get请求


4.Python接口自动化-requests模块之post请求


5.Python接口自动化之cookie、session应用


6.Python接口自动化之Token详解及应用


7.Python接口自动化之requests请求封装


8.Python接口自动化之pymysql数据库操作


9.Python接口自动化之logging日志


10.Python接口自动化之logging封装及实战

想获取更多最新干货内容

快来星标 置顶 关注我

每周一、三、五 08:30见

<<  向右滑动查看下一张图片  >>

 后台 回复"资源"取干货

回复"微信群"一起打怪升级

个人微信:Cc2015123

添加请注明来意 :)

真爱四连,2021年再见~

猜你喜欢

转载自blog.csdn.net/weixin_42485712/article/details/112001262
今日推荐