【黑马JavaWeb后端基础之Maven】

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站课程做的学习笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值