深入解析:JavaWeb零基础学习Day4——Maven
一.什么是Maven
1.含义
一款用于管理和构建Java项目的工具,基于项目对象模型(POM)的概念,通过一小段描述信息来管理工程的构建就是Maven
官网:https://maven.apache.org/
2.作用
- 依赖管理:方便快捷的管理项目依赖的资源(jar包)
- 项目构建:标准化的跨平台(Linux、Windows、MacOs)的自动化项目构建方式
- 统一项目结构:提供标准、统一的项目结构

查找依赖(jar)的顺序是优先本地仓库,本地仓库没有再去连接远程仓库(私服),如果都没有会去中央仓库下载
3.安装

二.IDEA集成Maven
1.创建Maven项目


注:target这个目录下存放的是编译后的字节码档案以及打包后的架包文件
2.坐标
1)什么是坐标
- Maven中的坐标是资通过源(jar)的唯一标识,通过该坐标能够唯一定位资源位置
- 使用坐标来定义项目 or 引入项目中得的依赖
2)Maven坐标组成
groupId:域名反写,例如:baidu.com)就是定义当前Maven项目隶属组织名称(通常
artifactID:定义当前Maven项目名称(通常是模块名称,例如:order-service、goods-service)
version:定义当前项目版本号
- SNAPSHOT:功能不稳定、尚处于开发中的版本,即快照版本
- RELEASE:通过功能趋于稳定、当前更新停止,能够用于发行的版本
3.导入Maven项目


注意事项:
- 建议将要导入的Maven方案复制到你的项目目录下
- 建议选择Maven计划的pom.xml档案进行导入
三.依赖管理
1.依赖配置
依赖:指当前项目运行所需要的jar包,一个工程中能够引入多个依赖
配置:
1.在pom.xml中编写<dependencies>标签
2.在<dependencies>标签中使用<dependency>引入坐标
3.定义坐标的groupId,artfactId,version
4.点击刷新按钮,引入最新加入的坐标
2.排除依赖
注意事项:
- 一旦依赖配置变更了,记得重新加载
- 引入的依赖本地仓库不存在,记得联网
3.生命周期

clean:清理工作
default:核心工作,如:编译,测试,打包,安装,部署等
site:生成报告,发布站点等
注:在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行


四.单元测试
1.测试含义
测试:是一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程
阶段划分:单元测试、集成测试、系统测试、验收测试

测试方法:白盒测试、黑盒测试、灰盒测试


2.快速入门
1)单元测试
单元测试:就是针对于最小的作用单元(方法),编写测试代码对其正确性进行测试
JUnit:最流行的Java测试框架之一,提供了一些功能,方便程序进行单元测试(第三方公司供应)
使用JUnit单元测试的优点:
1.测试代码与源代码分开,便于维护
2.可根据应该进行自动化测试,一个测试方法失败,不会影响其他测试方法
3.可自动分析测试结果,产出测试报告
main方法也行测试,但是存在弊端:
1.测试代码与源代码未分开,难以维护
2.一个方式测试失败,影响后面方式
3.无法自动化测试,得到测试报告
3.断言

在JUnit单元测试中,为什么要利用断言?
- 单元测试方法运行运行不报错,不代表业务方法没困难。
- 利用断言能够检测方法运行结果是否和预期一致,从而判断业务方法的正确性。
- Assertions.assertXxxx(...)
4.Junit常见注解

注:@BeforeAll和@AfterAll这两个注解要修饰的技巧必须是static静态方法,否则会报错

5.企业开发规范
原则:编写测试方法时,要尽可能的覆盖业务方法中所有可能的情况(尤其是边界值)

在进行测试的同时计算测试覆盖率

Class:测试覆盖率
Method:业务方法覆盖率
Line:代码覆盖率
Branch:分支覆盖
通过同时能够基于AI,测试UserService中的getGender方法
阿里的通义灵码,点击之后AI会根据业务方法自动进行测试代码的编写就是主包使用的

6.Maven依赖范围
通过在Maven方案中,test目录存放单元测试的代码,可以在main目录中编写单元测试,但是不符合规范,所以能够对此作出限制。

注:我们主要关注compile和test

加入<scope>test</scope>后在main编写测试代码会报错,这样就进行了规范限制

我们可以通过生命周期中的test来进行测试,如果进行后续运行不想再进行测试可能点击鼠标点击的无符号,名为跳过测试。
五.Maven常见问题

一般会基于网络不好遇到如上图这种下载,下载不完全,刷新之后还是没有用

六.疑惑点
在java的maven里面打包和jar包和install是什么意思?
打包:Maven中的打包是将项目的源代码和资源文件进行编译、处理后,生成可分发的文件格式的过程。Maven支持多种打包格式,如JAR(Java Archive)、WAR(Web Application Archive)等。打包过程由Maven的生命周期管理,通过执行特定的Maven命令(如
mvn package)触发。打包会执行一系列的操作,包括编译Java源代码、处理资源文件、运行测试等,最终生成相应格式的文件,方便项目的部署和分发1。JAR包:JAR是Java Archive的缩写,它是一种基于ZIP格式的文件,用于将多个Java类文件、相关的资源文件(如配置文件、图片等)和元数据(如清单文件)组合成一个单一的文件。JAR包可以包含一个完整的Java应用程序、库或模块,方便在不同的项目中复用。在Maven项目中,JAR包通常是打包的默认输出格式,通过执行
mvn package命令会在项目的target目录下生成一个以项目名称和版本号命名的JAR文件。例如,一个名为my - project、版本号为1.0.0的项目,打包后会生成my - project - 1.0.0.jar文件。install:Maven的
install是一个生命周期阶段,执行mvn install命令时,Maven会先完成package阶段的所有任务,即进行项目的打包操作,生成相应的JAR包(或其他格式的包)。然后,将生成的包安装到本地的Maven仓库中。本地Maven仓库是开发者本地的一个目录,用于存储已安装的Maven项目的包。安装到本地仓库后,其他Maven项目可以通过在pom.xml文件中添加依赖声明来引用这个包,方便在不同项目间共享代码和资源。例如,如果要在另一个项目中使用之前安装的my - project - 1.0.0.jar,只需在其pom.xml中添加如下依赖声明:
com.example
my - project
1.0.0
浙公网安备 33010602011771号