Maven概述
Maven介绍
- Apache Maven是一个项目管理和构建工具,它基于项目对象模型(Project Object Model , 简称: POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。官网
- Maven作用:
| 依赖管理 | 方便快捷的管理项目依赖的资源(jar包) |
|---|---|
| 项目构建 | 提供标准化的跨平台(Linux、Windows、MacOS)的自动化构建方式。 |
| 统一项目结构 | 提供标准、统一的项目结构 |
- 依赖管理:在maven项目的pom.xml文件中,添加一段如下所示的配置后,maven会自动的根据配置信息的描述,去下载对应的依赖。 在项目中,就可以直接使用了。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
-
项目构建:通过Maven中的命令,可以方便的完成项目的编译(compile)、测试(test)、打包(package)、发布(deploy) 等操作。

-
统一项目结构:提供一套标准的java项目目录。

注:Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。开源项目
Maven模型
-
构建生命周期/阶段(Build lifecycle & phases)

-
项目对象模型 (Project Object Model):
将我们自己的项目抽象成一个对象模型,有自己专属的坐标。
坐标,就是资源(jar包)的唯一标识,通过坐标可以定位到所需资源(jar包)位置。坐标的组成部分:groupId: 组织名、arfitactId: 模块名、Version: 版本号。

- 依赖管理模型(Dependency) :使用坐标来描述当前项目依赖哪些第三方jar包,只需要在pom.xml中配置依赖的配置文件。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
Maven仓库
-
仓库:用于存储资源,管理各种jar包。(仓库的本质就是一个目录(文件夹),这个目录被用来存储开发中所有依赖(就是jar包)和插件)
- 本地仓库:自己计算机上的一个目录(用来存储jar包)
- 中央仓库:由Maven团队维护的全球唯一的。仓库地址
- 远程仓库(私服):一般由公司团队搭建的私有仓库
-
jar包的查找顺序则可为: 本地仓库 --> 远程仓库–> 中央仓库
-
配置本地仓库:在Maven的安装目录下,新建一个目录,到conf目录下修改settings.xml配置文件,修改如下:
复制之前新建的用来存储jar包的路径,替换掉标签体内容

配置阿里云私服,提高jar包下载速度。在标签下为其添加子标签,内容如下:

IDEA集成Maven
Maven项目目录结构

依赖管理
依赖排除
- 排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本。
- 使用< exclusion>< /exclusion>标签

生命周期
-
Maven的生命周期就是为了对所有的构建过程进行抽象和统一。 描述了一次项目构建,经历哪些阶段。
-
Maven对项目构建的生命周期划分为3套(相互独立)
- clean:清理工作。
- default:核心工作。如:编译、测试、打包、安装、部署等。
- site:生成报告、发布站点等。

-
主要阶段:
- clean:移除上一次构建生成的文件
- compile:编译项目源代码
- test:使用合适的单元测试框架运行测试
- package:将编译后的文件打包,如:jar、war等(junit)
- install:安装项目到本地仓库
注:在同一套生命周期中,在执行后面的生命周期时,前面的生命周期都会执行。
单元测试
介绍
- 测试:是一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。
- 阶段划分:单元测试、集成测试、系统测试、验收测试。
- 测试方法:白盒测试、黑盒测试 及 灰盒测试。

Junit入门
- JUnit:最流行的Java测试框架之一,提供了一些功能,方便程序进行单元测试(第三方公司提供)。
- 优势:
- 测试代码与源代码分开,便于维护。
- 可根据需要进行自动化测试。
- 可自动分析测试结果,产出测试报告。
- 入门程序:
在pom.xml中,引入JUnit的依赖。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
在test/java目录下,创建测试类,并编写对应的测试方法,并在方法上声明@Test注解。
@Test
public void testGetAge(){
Integer age = new UserService().getAge("110002200505091218");
System.out.println(age);
}
运行单元测试,通过——绿色,失败——红色。
- 注意:
- 测试类的命名规范为:XxxxTest
- 测试方法的命名规定为:public void xxx(){…}
断言
- JUnit提供了一些辅助方法,用来帮我们确定被测试的方法是否按照预期的效果正常工作,这种方式称为断言。
- 单元测试运行不报错不代表业务方法没问题,通过断言可以判断业务方法逻辑正确性
| assertEquals(Object exp, Object act, String msg) | 检查两个值是否相等,不相等就报错。 |
|---|---|
| assertNotEquals(Object unexp, Object act, String msg) | 检查两个值是否不相等,相等就报错。 |
| assertNull(Object act, String msg) | 检查对象是否为null,不为null,就报错。 |
| assertNotNull(Object act, String msg) | 检查对象是否不为null,为null,就报错。 |
| assertTrue(boolean condition, String msg) | 检查条件是否为true,不为true,就报错。 |
| assertFalse(boolean condition, String msg) | 检查条件是否为false,不为false,就报错。 |
| assertSame(Object exp, Object act, String msg) | 检查两个对象引用是否相等,不相等,就报错。 |
常见注解
| @Test | 测试类中的方法用它修饰才能成为测试方法,才能启动执行 |
|---|---|
| @BeforeEach | 用来修饰一个实例方法,该方法会在每一个测试方法执行之前执行一次。 |
| @AfterEach | 用来修饰一个实例方法,该方法会在每一个测试方法执行之后执行一次。 |
| @BeforeAll | 用来修饰一个静态方法,该方法会在所有测试方法之前只执行一次。 |
| @AfterAll | 用来修饰一个静态方法,该方法会在所有测试方法之后只执行一次。 |
| @ParameterizedTest | 参数化测试的注解 (可以让单个测试运行多次,每次运行时仅参数不同) |
| @ValueSource | 参数化测试的参数来源,赋予测试方法参数 |
| @DisplayName | 指定测试类、测试方法显示的名称 (默认为类名、方法名) |
依赖范围
- 在maven中,如果希望限制依赖的使用范围,可以在pom.xml中配置 < scope>< /scope> 属性来控制依赖范围。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.1</version>
<scope>test</scope> <!--在test文件夹范围内-->
</dependency>
Maven常见问题
- Maven项目中添加的依赖,未正确下载,造成右侧Maven面板中的依赖报红,再次reload重新加载也不会再下载。

- 产生原因:由于网络原因,依赖没有下载完整导致的,在maven仓库中生成了xxx.lastUpdated文件,该文件不删除,不会再重新下载。
- 解决方法:根据maven依赖的坐标,找到仓库中对应的 xxx.lastUpdated 文件,删除,删除之后重新加载项目即可。
注:本篇文章是基于黑马程序员的《JavaWeb+AI》b站课程做的学习笔记

1740

被折叠的 条评论
为什么被折叠?



