Javaweb-03后端基础:maven基础
Javaweb-03后端基础:maven基础
- [ 任务列表 ]
1.maven初识
- maven是一款管理和构建Java项目的工具。
- maven作用:
- 依赖管理,在配置文件中配置就行了。
- 项目构建,标准化项目构建流程
- 统一的项目结构,idea和eclipse中的文件目录都是可以通用的
2.maven概述
- maven是一款管理和构建Java项目的工具。它基于项目对象模型POM(Project Object model)的概念,通过一小段信息描述来管理项目构建。(就是把项目也当做一个对象进行管理,一小段描述信息就是指项目中的核心配置文件pom.xml)
2.1.maven模型
- maven模型(如下图)
2.2.Maven仓库
- Maven仓库,是用来存储和管理jar包的。
.png)
2.3.Maven安装
Maven安装
将zip安装包解压到没有中文不带空格的路径下;
修改maven的配置文件,配置本地仓库,在conf文件夹下的setting.xml配置文件中修改53行
<localRepository>E:\develop\apache-maven-3.8.3\mvn_repo</localRepository>修改maven的配置文件,配置阿里云的私服,在conf文件夹下的setting.xml配置文件中修改
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
配置环境变量:MAVEN_HOME
测试,win+R快捷键输入cmd,打开命令提示符,然后输入:mvn -v
3.IDEA集成maven
3.1.配置Maven环境(全局)
配置Maven环境(全局)————
我的全局配置有问题,有时间再找方法,可以先选择创建空项目,然后再配置maven环境进入IDEA的欢迎界面,点击file的close Project
然后点击customize的All settings
然后修改Build,Execution,Deployment下的
Build Tools下面,Maven里面的:
maven home(maven的安装目录)
settings file(maven的配置文件)
local repository(maven本地仓库目录)
Build Tools下面,Maven下的Runner里面的:最终运行的GRE的版本
compiler下面,Java compiler下的:Project bytecode Version(选择和GRE版本一致)。
3.2.创建Maven项目
创建Maven项目,然后和上方的全局配置一致选择,然后在file中选择 Project Structure配置JDK版本。
创建模块
Test目录下没有resources,如果需要则自己创建
3.3.Maven坐标
- Maven坐标:是资源的唯一标识。
使用坐标表示一个项目示例:
3.4.导入Maven项目
导入Maven项目(首先找到要导入的maven项目,点击复制,然后打开要导入maven的项目,在电脑的磁盘文件夹下点击粘贴,然后项目中会显示两个非加黑的模块名)
文件夹在IDEA中已经显示出来了,但是并不识别这是一个maven项目
pom.xml文件没有变蓝色,项目名没有加粗。
方式一:File
方式二:maven面板
4.依赖管理
4.1.基本配置
依赖:指的是项目运行所需要的jar包,一个项目中可以引入多个依赖
配置:在pom.xml配置文件中编写dependencies标签,使用dependency引入坐标,定义坐标的groupId,artifactId,version。点击刷新按钮,引入最新加入的坐标
4.2.依赖查找
如果不知道依赖的坐标信息,可以到mvn的中央仓库(https://mvnrepository.com/)中搜索,可以找usages最多的来用。
4.3.依赖传递
4.4.排除依赖
- 排除依赖:指主动断开依赖的资源,被排除的依赖无需指定版本,然后点击刷新
4.5.注意事项
- 一旦依赖配置变更了,记得重新加载(就是刷新一下)
- 引入的依赖的本地仓库不存在,记得联网
4.6.Maven的生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和同一
maven中有三套相互独立的生命周期。
- clean:清理工作
- default:核心工作,如:编译、测试、打包、安装、部署等。
- site:生成报告,发布站点等。
每套生命周期包含一些阶段(phase),阶段是有顺序的,后面阶段依赖于前面的阶段。(主要关注五个阶段:clean,compile,test,package,install)。
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。
4.7.执行指定生命周期的两种方式
方式一:在idea中,右侧的的Maven工具栏选中对应的生命周期,双击执行。
双击clean删除target后,执行install
安装的jar包在本地仓库的这里
方式二:在命令行中,通过命令执行。
在maven-project01的pom.xml上右键OpenIn打开磁盘目录
在磁盘目录最上面的导航栏中输入cmd打开命令提示符
执行clean命令,输入mvn clean,然后回车
执行编译,输入mvn compile,然后回车
同理,执行测试,输入mvn test,然后回车
执行打包,输入mvn compile,然后回车
执行安装,输入mvn install,然后回车
- maven的底层更像是一个插件执行框架,底层的功能都是基于插件完成的。
5.单元测试
- 测试:一种用来鉴定软件的正确性,完整性,安全性和质量的过程
5.1.阶段划分和测试方法
- 阶段划分:
.png)
1). 单元测试
- 介绍:对软件的基本组成单位进行测试,最小测试单位。
- 目的:检验软件基本组成单位的正确性。
- 测试人员:开发人员
2). 集成测试
- 介绍:将已分别通过测试的单元,按设计要求组合成系统或子系统,再进行的测试。
- 目的:检查单元之间的协作是否正确。
- 测试人员:开发人员
3). 系统测试
- 介绍:对已经集成好的软件系统进行彻底的测试。
- 目的:验证软件系统的正确性、性能是否满足指定的要求。
- 测试人员:测试人员
4). 验收测试
- 介绍:交付测试,是针对用户需求、业务流程进行的正式的测试。
- 目的:验证软件系统是否满足验收标准。
- 测试人员:客户/需求方
测试方法:
1). 白盒测试
清楚软件内部结构、代码逻辑。
用于验证代码、逻辑正确性。
2). 黑盒测试
不清楚软件内部结构、代码逻辑。
用于验证软件的功能、兼容性、验收测试等方面。
3). 灰盒测试
结合了白盒测试和黑盒测试的特点,既关注软件的内部结构又考虑外部表现(功能)。
5.2.单元测试、入门程序
单元测试:对软件最小的功能单元(方法),编写测试代码对其正确性进行测试。
JUnit:最流行的Java测试框架之一。(推荐)
通过main方法是可以进行测试的,可以测试程序是否正常运行。但是main方法进行测试时,会存在如下问题:
- 测试代码与源代码未分开,难维护。
- 一个方法测试失败,影响后面方法。
- 无法自动化测试,得到测试报告。
而如果我们使用了JUnit单元测试框架进行测试,将会有以下优势:
- 测试代码与源代码分开,便于维护。
- 可根据需要进行自动化测试。一个方法测试失败,不会影响其他测试方法。
- 可自动分析测试结果,产出测试报告。
JUnit使用流程(入门程序):
首先将要测试的代码
UserService.java放入项目的java源文件中,在pom.xml文件中引入JUnit依赖并刷新。在test/java目录下,创建测试类,并编写对应的测试方法,并在方法上声明@Test注解。
- JUnit单元测试类的命名规范为:
xxxTest(规范)。 - JUnit单元测试方法必须声明为
public void test方法名(){}(规定,必须遵守)
- JUnit单元测试类的命名规范为:
5.3.断言
- JUnit提供了一些辅助方法,用来帮我们确定被测试的方法是否按照预期的效果正常工作,这种方式称为断言。
- 断言需要借助里面提供的工具类Assertions。下述方法形参中最后一个参数msg,表示错误提示信息,可以不指定(有对应的重载方法)。断言不会有任何输出
当业务逻辑出问题时,单元测试失败。
5.4.常见注解
- 测试前资源准备,测试后资源释放(BeforeEach,AfterEach,BeforeAll,AfterAll)
- 参数化测试:(ParameterizedTest + ValueSource)
- 指定测试类,测试方法显示名称:(DisplayName)
- 在main中编写单元测试代码可以吗?可以,但不规范。
5.5.单元测试——企业开发规范(AI生成单元测试)
- 原则:编写测试方法时,要尽可能的覆盖业务方法中所有可能得情况(尤其是边界值)
- 单元测试覆盖率
覆盖率的统计:
5.6.依赖范围
依赖的jar包,默认情况下,可以在任何地方使用,在main目录下,可以使用;在test目录下,也可以使用。
在maven中,如果希望限制依赖的使用范围,可以通过
<scope>…</scope>设置其作用范围。
5.7.maven生命周期-Test
6. maven常见问题解决
- 当maven面板的dependencies有波浪线爆红,刷新也没有用时。
- 原因:由于网络,依赖没有下载完整导致的,在Maven仓库中生成了xxx.lastUpdated文件,该文件不删除,不会再重新下载。
- 解决方案:
- 根据Maven依赖的坐标,找到仓库中对应的 xxx.lastUpdated文件,删除,删除之后重新加载项目即可
- 在maven仓库下通过命令(del /s *.lastUpdated)批量递归删除指定目录下的 xxx.lastUpdated文件,删除之后重新加载项目即可。
- 在Maven仓库下封装了一个del.dat脚本,封装的就是2的命令,以后如果依赖下载不下来,直接双击批处理脚本,删除之后重新加载项目即可。
- 如果重新加载依赖,依赖下载后Maven面板依旧爆红,此时可以关闭IDEA,重新打开IDEA加载该项目即可。
7. 参考资料
Javaweb-03后端基础:maven基础的更多相关文章
- Maven——基础篇
Maven--基础篇 Maven出现前的问题 一个项目就是一个工程,而工程内一般是通过package包来分模块,比较用户模块,订单模块等,如果项目过于庞大,通过包模块来划分就不太合适,而应该拆分为模块 ...
- maven基础知识
1.maven基础知识 1.1maven坐标 maven坐标通常用冒号作为分割符来书写,像这样的格式:groupId:artifactId:packaging:version.项目包含了junit3. ...
- Maven基础
Maven基础 maven核心内容:依赖管理. Maven是Apache组织的开源项目,是项目构建工具.用来管理jar包之间的相互依赖关系 Maven是一个项目构建和管理的工具,提供了帮助管理,构建, ...
- maven 基础
maven安装链接 maven基础命令: 编译命令:mvn compile 测试命令:mvn test 清空命令:mvn clean 打包命令:mvn package 打包命令:mvn install ...
- Maven基础知识详解
1. 简介 Maven在Java领域的应用已经非常广泛了,有了Maven的存在是的开发人员在搭建.依赖.扩展和打包项目上变得非常简单. 2. Windows安装Maven 下载安装包 http ...
- maven基础学习-为什么要用maven,帮助解决了什么问题,怎么解决的,希望以后学习每个知识点都可以这样问下自己
maven基础学习 第1章 Maven介绍 1.1 什么是Maven 1.1.1 什么是Maven Maven 的正确发音是[ˈmevən],而不是"马瘟"以及其他什么瘟.Mave ...
- Maven 基础标签之版本管理和冲突解决
前言 我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线 maven基础 Maven 是一个项目管理工具,主要用于项目构建,依赖管理, ...
- Maven基础学习笔记
Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/maven-3/ 阿里 ...
- Golang 基础之基础语法梳理 (三)
大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...
- [.net 面向对象编程基础] (3) 基础中的基础——数据类型
[.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...
随机推荐
- 【实战】Rust与前端协同开发:基于Tauri的跨平台AI阅读器实践
一.背景与目标:为什么做一个"非典型"的RSS阅读器? 在信息爆炸的时代,RSS依然是高效获取结构化内容的重要方式,但市面上主流阅读器要么功能冗余(如集成社交属性),要么技术栈陈旧 ...
- 4 MyBatis动态SQL之trim元素|转
摘要:trim标签是一个格式化的标签,可以完成set或者where标签的功能. 1 MyBatis动态SQL之if 语句 2 MyBatis动态sql之where标签|转 3 MyBatis动态SQL ...
- 对比Jira/禅道后,我们为什么选择Leangoo做敏捷项目管理?
一.敏捷团队的3大隐形痛点 我曾带领过一个6人的Scrum团队,迭代经常遇到: 需求变更黑洞:客户口头需求未及时同步,开发完成后才发现理解偏差(案例:某次迭代因此浪费32人日) 进度监控盲区:用Exc ...
- 启智树提高组day1T1 3436 : A:Doughnut
启智树提高组day1T1 3436 : A:Doughnut 原题传送门 题目描述 Aloisia有很多很多甜甜圈.有一天,她在地上画了n+1个格子,想从第1个格子跳到第n+1个格子.规则是,Aloi ...
- SQL Server 2025 预览版新功能点评
T-SQL 语言增强 正则表达式 (Regex) 支持 功能概述: SQL Server 2025 在 T-SQL 中原生引入了 POSIX 兼容的正则表达式支持,通过内置函数(如 REGEXP_LI ...
- 使用hive数据查询小结
业务背景: 公司大数据查询需要通过hive查询和分析一些数据 产品提出业务分析需求: 我的处理方式: 接到需求就想怎么写SQL语句,然后不断调整SQL语句进行验证,最后这个需求写了170行的SQL语句 ...
- Spring Cloud Gateway实现分布式限流和熔断降级
小伙伴们,你们好呀!我是老寇!一起学习学习gateway限流和熔断降级 一.限流 思考:为啥需要限流? 在一个流量特别大的业务场景中,如果不进行限流,会造成系统宕机,当大批量的请求到达后端服务时,会造 ...
- 开源共建 | TIS整合数据同步工具ChunJun,携手完善开源生态
TIS整合ChunJun实操 B站视频: https://www.bilibili.com/video/BV1QM411z7w5/?spm_id_from=333.999.0.0 一.ChunJun ...
- PHP中设置时区方法
在程序PHP 5以上版本的程序代码中使用函数ini_set('date.timezone','Asia/Shanghai');或者date_default_timezone_set('Asia/Sha ...
- 可以安装成功的red5资源
找了好久,只有这个可用 https://download.csdn.net/download/haiwalt/8600781 注意下 RED5_HOME 路径是运行exe文件后 有个 D:\Re ...