Maven生命周期

三套生命周期,项目清理,项目构建,项目生成

我们主要关注五个阶段

  • clean:移除上一次构建生成的文件
  • compile:编译项目源代码
  • test:使用合适的单元测试框架运行测试
  • package:将编译后的文件打包,如:jar, war等
  • install: 安装项目到本地仓库


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

执行指定的生命周期

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

    clean:清理上一次项目构建产生的文件,也就是删除target目录。

compile:编译项目文件,放在target目录下

test:执行单元测试,稍后讲解

site :打包,生成jar包文件,放在target目录下

install:安装,将当前maven项目安装到我们的本地仓库

若想知道我们的项目安装到本地仓库什么位置了,就要先根据xml文件中的信息查找

如果你是默认的如上图,那么路径就是你的本地仓库文件夹下的org目录下的example目录下的maven_project01

例:"E:\maven\apache-maven-3.9.9\mvn_repo\org\example\maven_project01"

如果你进行了设置,如下:

那么本地位置就会在

...你的仓库\com\my_learn\maven_project01

注意,编者在第一次使用install时出现了报错(没有package),按照compile->package->install操作后就成功生成了jar包,但是在install时应该是会自动执行之前的所有操作的,编者clean后再次直接install也成功了,应该是偶然错误。

测试

测试是用来辅助鉴定软件正确性,完整性,安全性和质量的重要内容,因此重点讲解

测试方法又分为:白盒,黑盒,灰盒测试

  • 白盒测试:开发人员知道内部代码,可判断代码逻辑是否正确,验证代码
  • 黑盒测试:不清楚软件内部结构,用于验证软件功能和兼容性等
  • 灰盒测试:结合白盒和黑盒。

单元测试

针对最小的功能单元(比如一个方法)进行正确性测试。

JUnit是最流行的java测试框架之一,方便进行测试。

为何不在main方法直接跑》

  • 测试代码与源代码未分开,难维护
  • 一个方法测试失效,影响后面的方法
  • 无法自动化测试,得到测试报告


使用JUnit进行单元测试

下面以案例的形式进行讲解

  1. 在pom.xml中引入依赖
  2. 在test/java目录下创建测试类,并编写对应的测试方法,并在方法上声明@Test注解。
  3. 运行测试

注意:JUnit单元测试类命名必须以Test结尾,单元测试方法必须声明为public void

一图讲解:

如图,我们在main/java/com.huohuo包中编写好了待测试的代码UserService,并在test/java/com.huohuo包中编写好了测试程序,就是@Test注解下的测试方法,调用待测试的类方法。

此时,测试方法右边出现了绿色的小箭头,点击就能执行测试,测试成功就会显示如图的对勾。

那么有时候我们的方法没有报错,却有逻辑错误,比如1+1=3,那么如何测试出来呢

实际上断言测试就是以上固定的流程,可以辅助我们进行判断。

接下来我们看一看常见的注解

实际上这些注解和方法了解就行了,用的时候随时查。

最后是企业级开发的一些规范

企业开发规范

我们可以利用ai工具辅助生成专业的单元测试

Maven依赖范围

常见问题解决方案

end

下一节是web基础知识.

致谢 :本文参考黑马程序员的视频,本人也看过很多黑马程序员的视频,给我带来非常大的帮助。

https://www.bilibili.com/video/BV1yGydYEE3H/?vd_source=1b8f9bfb1d0891faf1c70d7678ae56db

相关推荐
唐青枫1 分钟前
Java Jetty 实战详解:从嵌入式 HTTP 服务到 Spring Boot 容器替换
java
lazy H1 小时前
从入门到日常开发,一篇文章掌握 Git 核心操作
git·后端·学习·github
Scott9999HH8 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔8 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
GetcharZp9 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
码智社9 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海9 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖10 小时前
JDK 26 新特性详解
java·开发语言
马优晨11 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
weixin_4462608512 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask