JavaWeb_Maven

Maven

Maven是一款用于管理和构建Java项目的工具。

Maven概述

Maven的作用:

①依赖管理:方便快捷地管理项目依赖的资源(jar包)

在pom.xml中配置好jar包的信息 后,maven会自动下载jar包,并且加入到当前的这个项目中。

②项目构建:标准化的跨平台(Linux、Windows、MacOS)的自动化项目构建方式。

Maven提供项目构建的指令可以快速地对项目进行编译、测试、打包等操作

③统一项目结构:提供标准、统一的项目结构。

(所有的开发工具用maven构建出来的项目结构都是统一的)

Maven的结构:

Maven由**项目对象模型(POM)、依赖管理模型(Dependency)、构建生命周期/阶段(Build lifecycle & phases)**三大部分组成。

POM.XML中定义了一小段描述信息来描述项目的构建 。在XML配置文件当中配置了项目对象模型POM ,也配置了依赖管理模型Dependency。

其中项目对象模型主要来描述当前这个maven项目的信息 ;配置好依赖信息后,maven会去仓库 里面查找这个jar包。Maven的仓库用于存储和管理各种jar包。

本地仓库:自己计算机上的一个目录。

中央仓库:由Maven团队维护的全球唯一的。

远程仓库(私服):一般由公司团队搭建 的私有仓库。

Maven的安装

Welcome to Apache Maven -- Maven

测试: 命令行输入mvn -v查看maven的版本号。

IDEA集成Maven

配置Maven环境(全局):

创建Maven项目:

maven项目的目录结构

运行项目的过程当中,目录结构多了一个target目录,这个target目录下存放的是编译后的字节码文件以及打包后的jar包文件。

运行时自动地对项目进行编译并将编译后的字节码文件放在了target下的classes这个目录下。

Maven坐标:

Maven中的坐标是资源(jar)的唯一标识 ,通过该坐标可以唯一定位资源位置。

使用坐标来定义项目 或引入项目中需要的依赖。

Maven坐标主要组成:

groupId:定义当前Maven项目隶属组织名称(通常是域名反写)

artifactId:定义当前Maven项目名称(通常是模块名称)

version:定义当前项目版本号

SNAPSHOT:功能不稳定 ,处于开发中的版本即快照版本。

RELEASE:功能趋于稳定 ,当前更新停止,可以用于发行的版本。

导入Maven项目:

先将maven项目的文件夹复制出来,粘贴到目标项目的目录下 。此时文件夹已经在项目目录中显式出来了,但是它并不识别这是一个maven项目,这就需要上图的两种方式来导入了。

依赖管理

依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。

依赖的配置:

①在pom.xml 中编写**<dependencies>**标签

②在**<dependencies>** 标签中使用**<dependency>引入坐标**

③定义坐标的groupId,artifactId,version

④点击刷新按钮,引入最新加入的坐标

依赖的坐标信息,可以在 Maven Repository: Search/Browse/Explore中搜索。

Maven有依赖传递 的特性:如果A依赖了B,B依赖了C,C依赖了D,那么在项目中引入了A以后,BCD是默认会传递下来的。

排除依赖 :指主动断开依赖的资源,被排除的资源无需指定版本。

Maven的生命周期:为了对所有的maven项目构建过程进行抽象和统一。

Maven构建生命周期的各个阶段,底层都是通过一个一个的插件来完成的。

Maven中有3套相互独立的生命周期:

clean :清理工作。

default :核心工作,如:编译、测试、打包、安装、部署等。

site :生成报告、发布站点等。

每套生命周期包含一些阶段,阶段是有顺序的 ,后面的阶段依赖于前面的阶段。

在同一套 生命周期中,当运行后面的阶段时,前面的阶段都会运行。

安装(install):安装项目到本地仓库。

执行指定生命周期的两种方式:

在idea中,右侧的maven工具栏 ,选中对应的生命周期,双击执行。

在命令行中,通过命令执行 。命令的格式:mvn 生命周期的阶段

重点关注生命周期中的五个阶段:clean、compile、test、package、install。

单元测试

测试:是一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。

测试阶段存在于软件开发的各个阶段 ,根据阶段的不同,测试分为四种:单元测试、集成测试、系统测试、验收测试。

单元测试的目的:检验软件基本组成单位 (通常指方法 )的正确性。测试人员:开发人员 最小测试单位 (白盒测试)

集成测试将已分别通过测试的单元 ,按设计要求组合成系统或子系统 ,再进行测试。目的:检查单元之间的协作是否正确 。 测试人员:开发人员 (灰盒测试)

系统测试对已经集成好的软件系统进行彻底的测试 。目的:验证软件系统的正确性、性能是否满足指定的要求 。 测试人员:专业的测试人员 (黑盒测试)

验收测试也称交付测试 ,是针对用户需求、业务流程 进行的正式的测试。目的:验证软件系统是否满足验收标准 。 测试人员:客户/需求方 (黑盒测试)

测试的方法:白盒测试、黑盒测试及灰盒测试。

白盒测试:清楚软件内部结构、代码逻辑 。用于验证代码、逻辑正确性。

黑盒测试:不清楚软件内部结构、代码逻辑 。用于验证软件的功能、兼容性等方面。

灰盒测试:既关注软件的内部结构 又考虑外部表现 (功能)。

使用Junit对业务方法进行单元测试:

①在pom.xml中,引入Junit的依赖。

②在test/java目录 下,创建测试类 ,并编写对应的测试方法 ,并在方法上声明**@Test注解**。

单元测试方法运行不报错,不代表业务方法没问题。Junit提供了一些辅助方法 ,帮我们确定被测试的方法是否按照预期的效果正常工作 ,这种方式称为断言。

上述方法形参中的最后一个参数msg,表示错误提示信息,可以不指定。

Junit常见注解:

JUnit单元测试的方法,可以通过参数化测试来声明方法形参 。@ParameterizedTest + @ValueSource

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

借助idea当中的覆盖率 可以判断单元测试有没有覆盖到业务方法所有可能出现的情况。

基于通义灵码自动生成单元测试:

依赖范围

依赖的jar包,默认情况下,可以在任何地方使用 。可以通过**<scope>...</scope>**设置其作用范围。

作用范围:

主程序范围有效。(main文件夹范围内)

测试程序范围有效。(test文件夹范围内)

是否参与打包运行。(package指令范围内)

当运行maven中test生命周期的阶段时,当前项目中所有规范的单元测试都会运行 。规范指类名最后以Test结尾。

Maven常见问题的解决方案:

重新加载依赖,依赖下载之后,maven面板如果还报红,此时可以关闭IDEA,重新打开IDEA加载此项目即可。

相关推荐
企业数字化笔记7 小时前
AI工具参数很多怎么办?预设、表单校验、危险参数与配置审计
java·spring boot·python·音视频
huaweichenai7 小时前
spring boot对接阿里短信
java·spring boot
KING-WU5127 小时前
Linux 工具之Make 与 Makefile
java·linux·服务器
马剑威(威哥爱编程)8 小时前
【AI全栈后端12-08】Spring Boot 用 MCP 统一接入内部系统:让 AI 接一次,全公司复用
java·人工智能·spring boot
顽疲8 小时前
从零用 Java 实现小红书 SpringBoot Vue UniApp(23)笔记话题多对多:一条笔记进多个话题池
java·vue.js·spring boot
木井巳8 小时前
【BFS 解决拓扑排序】课程表
java·算法·leetcode·广度优先·宽度优先·推荐算法·图搜索算法
Crazy________8 小时前
05Linux内存管理核心原理与运维实战
java·开发语言
Nebula_g8 小时前
JavaSE拓展:工具类Executors
java·开发语言·后端·spring·基础·javase
长弓三石8 小时前
企业级Harness开源平台BizBuddy适配AgentScope-2.0.4并发布0.7.0版本
java·人工智能·aigc
扶风ff8 小时前
练题簿在线免费刷题:会员线下组卷、Word 试卷与成绩导入,课堂检测更方便
java·开发语言·算法·小程序·word