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年再见~

Java接口自动化之Maven工具使用相关推荐

  1. java接口自动化(四) - 企业级代码管理工具Git的应用

    1.简介 首先我们自己需要将自己的代码上传到GitHub上边做好备份.用来避免万一由于某些不可控的非人为因素或者人为因素造成的代码丢失.而且GitHub是一个开源的代码管理工具.所以宏哥这里再次介绍一 ...

  2. 阿里java接口自动化实践pdf_接口自动化测试设计

    1.接口测试基础 1.1.什么是接口测试? 接口测试是测试系统组件间接口的一种测试. 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点. 接口测试的重点是要检查数据的交换,传递和控 ...

  3. Java接口自动化之TestNG单元测试框架(一)

    上一篇Java接口自动化系列文章:Java接口自动化之log4j日志框架,主要介绍log4j日志介绍.日志三大组成部分及日志实战. 以下主要介绍TestNG的简介.@Test注解及其属性. 01 Te ...

  4. java接口自动化书籍_java接口自动化优化(一)

    优化extentreports在线样式改为离线加载自己项目下的样式 主要解决extentreports在线加载失败问题 上篇文章介绍了通过testng编写用例后使用extentreports作为测试报 ...

  5. java接口自动化Excel占位符_基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport的接口自动化测试框架...

    接口自动化框架 项目说明 本框架是一套基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport而设计的数据驱动接口自动化测试框架,TestNG ...

  6. java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮

    1.简介 上一篇宏哥介绍完了接口用例设计,那么这一章节,宏哥就趁热打铁介绍一下,接口测试工具.然后小伙伴们或者童鞋们就可以用接口测试工具按照设计好的测试用例开始执行用例进行接口手动测试了.关于手动测试 ...

  7. java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)

    简介 了解什么是接口和为什么要做接口测试.并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程.其实这些基本上在python接口自动化的文章中已经详细的介绍过了,不清楚的可以过去看看.了 ...

  8. java接口自动化监控_java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮...

    1.简介 上一篇宏哥介绍完了接口用例设计,那么这一章节,宏哥就趁热打铁介绍一下,接口测试工具.然后小伙伴们或者童鞋们就可以用接口测试工具按照设计好的测试用例开始执行用例进行接口手动测试了.关于手动测试 ...

  9. Java接口自动化框架系列07:Web接口自动化测试框架设计思路

    1.Java web接口自动化框架 框架名称:Java+Maven+httpClients+TestNg+Allure (因本次只讲解java部分,未包括git和jenkins,如果是包括git和je ...

最新文章

  1. 在 Azure 上部署 Asp.NET Core Web App
  2. 【CentOS 7MySQL常用操作3】,MySQL常用命令#180113
  3. 计算机背景象怎样改变,我的页面背景总是黑色,以前改变过现在好象改变不了?我该怎么改变呢? 爱问知识人...
  4. 返回值类型与函数类型不匹配_C++返回值类型后置(跟踪返回值类型)
  5. 序列表转换成横向菜单
  6. 关于小程序·云开发峰会,你想get的干货全在这了!
  7. mysql use index用法_MySQL中USE INDEX 和 FORCE INDEX
  8. Windows下MySQL压缩包.zip的安装
  9. HTML5 header元素
  10. 7、重建二叉树(Python)
  11. 罗克露计算机组成原理书籍,计算机组成原理完整版罗克露全原版.ppt
  12. 1221_MISRA_C规范学习_关于函数的规则要求
  13. STM32系统学习——SPI(读写串行 FLASH)
  14. 【论文笔记】使用物理原理和领域知识进行无标注的监督学习
  15. 快递单号查询api接口对接
  16. 一分钟详解智能快递柜锁控板方案和原理
  17. 如何选择字体(font-family)
  18. 20160226.CCPP体系详解(0036天)
  19. java判断微信号、手机、名字的正则表达
  20. 使用python定义简单工资扣税实际收入函数

热门文章

  1. 杭电4554 叛逆的小明
  2. 嵌入式电路设计(最小系统)
  3. verilog学习记(加法器)
  4. 川大计算机生物学怎么样,四川大学生物信息学初试经验分享
  5. html5鼠标讯听,HTML5 随鼠标移动而变化的低频信号发生器
  6. 腾讯内部转岗_腾讯微博即将关停,网友:竟然还活着?
  7. java hbase流量日志,Spark+Hbase 亿级流量分析实战(日志存储设计)
  8. win10浏览器闪退_从没法用到真香!没想到改进了 3 年的 Windows 10 浏览器,竟然这么好用...
  9. XSS-Game level 10
  10. WIN7部分程序中文乱码的简单解决方法