JavaWeb零基础学习Day4——Maven

一.什么是Maven

1.含义

Maven是一款用于管理和构建Java项目的工具,基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建

**官网:**https://maven.apache.org/

2.作用

  • **依赖管理:**方便快捷的管理项目依赖的资源(jar包)
  • **项目构建:**标准化的跨平台(Linux、Windows、MacOs)的自动化项目构建方式
  • **统一项目结构:**提供标准、统一的项目结构

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

3.安装

二.IDEA集成Maven

1.创建Maven项目

**注:**target这个目录下存放的是编译后的字节码文件以及打包后的架包文件

2.坐标

1)什么是坐标

  • Maven中的坐标是资源(jar)的唯一标识,通过该坐标可以唯一定位资源位置
  • 使用坐标来定义项目or 引入项目中需要的依赖

2)Maven坐标组成

**groupId:**定义当前Maven项目隶属组织名称(通常是域名反写,例如:baidu.com

**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中添加如下依赖声明:

java 复制代码
<dependency>
    <groupId>com.example</groupId> <!-- 实际的groupId -->
    <artifactId>my - project</artifactId>
    <version>1.0.0</version>
</dependency>
相关推荐
遇印记4 小时前
网络运维学习笔记
数据结构·笔记·学习
残花月伴4 小时前
Consumer 和 Function 接口详解
java
W.Buffer4 小时前
设计模式-工厂模式:解耦对象创建的设计艺术
java·开发语言·设计模式
四谎真好看4 小时前
Java 黑马程序员学习笔记(进阶篇20)
java·笔记·学习·学习笔记
BUTCHER54 小时前
【原理扫描】SSL/TLS 服务器瞬时 Difie-Hellman 公共密钥过弱
java·服务器·网络·ssl
聪明的笨猪猪4 小时前
hot 100 (1)—— 两数之和(哈希)
java·经验分享·算法·哈希算法
D.....l4 小时前
STM32学习(MCU控制)(GPIO)
stm32·嵌入式硬件·学习
梵得儿SHI4 小时前
Java 注解与反射实战:自定义注解从入门到精通
java·开发语言·注解·自定义注解·元注解·控制注解的作用·声明式编程思想
沐知全栈开发4 小时前
Foundation 网格实例
开发语言