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包的。

![image (1)](D:\Downloads\image (1).png)

2.3.Maven安装

  • Maven安装

    1. 将zip安装包解压到没有中文不带空格的路径下;

    2. 修改maven的配置文件,配置本地仓库,在conf文件夹下的setting.xml配置文件中修改53行<localRepository>E:\develop\apache-maven-3.8.3\mvn_repo</localRepository>

    3. 修改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>
    4. 配置环境变量:MAVEN_HOME

    5. 测试,win+R快捷键输入cmd,打开命令提示符,然后输入:mvn -v

3.IDEA集成maven

3.1.配置Maven环境(全局)

  • 配置Maven环境(全局)———— 我的全局配置有问题,有时间再找方法,可以先选择创建空项目,然后再配置maven环境

    1. 进入IDEA的欢迎界面,点击file的close Project

    2. 然后点击customize的All settings

    3. 然后修改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.阶段划分和测试方法

  • 阶段划分:

![image (4)](D:\Downloads\image (4).png)

1). 单元测试

  • 介绍:对软件的基本组成单位进行测试,最小测试单位。
  • 目的:检验软件基本组成单位的正确性
  • 测试人员:开发人员

2). 集成测试

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

3). 系统测试

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

4). 验收测试

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

    • 1). 白盒测试

      清楚软件内部结构、代码逻辑。

      用于验证代码、逻辑正确性。

    • 2). 黑盒测试

      不清楚软件内部结构、代码逻辑。

      用于验证软件的功能、兼容性、验收测试等方面。

    • 3). 灰盒测试

      结合了白盒测试和黑盒测试的特点,既关注软件的内部结构又考虑外部表现(功能)。

5.2.单元测试、入门程序

  • 单元测试:对软件最小的功能单元(方法),编写测试代码对其正确性进行测试。

  • JUnit:最流行的Java测试框架之一。(推荐)

  • 通过main方法是可以进行测试的,可以测试程序是否正常运行。但是main方法进行测试时,会存在如下问题:

    1. 测试代码与源代码未分开,难维护。
    2. 一个方法测试失败,影响后面方法。
    3. 无法自动化测试,得到测试报告。
  • 而如果我们使用了JUnit单元测试框架进行测试,将会有以下优势:

    1. 测试代码与源代码分开,便于维护。
    2. 可根据需要进行自动化测试。一个方法测试失败,不会影响其他测试方法。
    3. 可自动分析测试结果,产出测试报告。
  • JUnit使用流程(入门程序):

    1. 首先将要测试的代码UserService.java放入项目的java源文件中,在pom.xml文件中引入JUnit依赖并刷新。

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

      • JUnit单元测试的命名规范为:xxxTest(规范)。
      • JUnit单元测试方法必须声明为public void test方法名(){} 规定,必须遵守)

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文件,该文件不删除,不会再重新下载。
  • 解决方案:
    1. 根据Maven依赖的坐标,找到仓库中对应的 xxx.lastUpdated文件,删除,删除之后重新加载项目即可
    2. 在maven仓库下通过命令(del /s *.lastUpdated)批量递归删除指定目录下的 xxx.lastUpdated文件,删除之后重新加载项目即可。
    3. 在Maven仓库下封装了一个del.dat脚本,封装的就是2的命令,以后如果依赖下载不下来,直接双击批处理脚本,删除之后重新加载项目即可。
  • 如果重新加载依赖,依赖下载后Maven面板依旧爆红,此时可以关闭IDEA,重新打开IDEA加载该项目即可。

7. 参考资料

Javaweb-03后端基础:maven基础的更多相关文章

  1. Maven——基础篇

    Maven--基础篇 Maven出现前的问题 一个项目就是一个工程,而工程内一般是通过package包来分模块,比较用户模块,订单模块等,如果项目过于庞大,通过包模块来划分就不太合适,而应该拆分为模块 ...

  2. maven基础知识

    1.maven基础知识 1.1maven坐标 maven坐标通常用冒号作为分割符来书写,像这样的格式:groupId:artifactId:packaging:version.项目包含了junit3. ...

  3. Maven基础

    Maven基础 maven核心内容:依赖管理. Maven是Apache组织的开源项目,是项目构建工具.用来管理jar包之间的相互依赖关系 Maven是一个项目构建和管理的工具,提供了帮助管理,构建, ...

  4. maven 基础

    maven安装链接 maven基础命令: 编译命令:mvn compile 测试命令:mvn test 清空命令:mvn clean 打包命令:mvn package 打包命令:mvn install ...

  5. Maven基础知识详解

    1. 简介   Maven在Java领域的应用已经非常广泛了,有了Maven的存在是的开发人员在搭建.依赖.扩展和打包项目上变得非常简单. 2. Windows安装Maven 下载安装包   http ...

  6. maven基础学习-为什么要用maven,帮助解决了什么问题,怎么解决的,希望以后学习每个知识点都可以这样问下自己

    maven基础学习 第1章 Maven介绍 1.1 什么是Maven 1.1.1 什么是Maven Maven 的正确发音是[ˈmevən],而不是"马瘟"以及其他什么瘟.Mave ...

  7. Maven 基础标签之版本管理和冲突解决

    前言 我们在做java项目的时候由于jar包太多,我们就需要使用maven做项目管理,管理项目的jar包依赖,包括打包上线 maven基础 Maven 是一个项目管理工具,主要用于项目构建,依赖管理, ...

  8. Maven基础学习笔记

    Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/maven-3/ 阿里 ...

  9. Golang 基础之基础语法梳理 (三)

    大家好,今天将梳理出的 Go语言基础语法内容,分享给大家. 请多多指教,谢谢. 本次<Go语言基础语法内容>共分为三个章节,本文为第三章节 Golang 基础之基础语法梳理 (一) Gol ...

  10. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

随机推荐

  1. 【实战】Rust与前端协同开发:基于Tauri的跨平台AI阅读器实践

    一.背景与目标:为什么做一个"非典型"的RSS阅读器? 在信息爆炸的时代,RSS依然是高效获取结构化内容的重要方式,但市面上主流阅读器要么功能冗余(如集成社交属性),要么技术栈陈旧 ...

  2. 4 MyBatis动态SQL之trim元素|转

    摘要:trim标签是一个格式化的标签,可以完成set或者where标签的功能. 1 MyBatis动态SQL之if 语句 2 MyBatis动态sql之where标签|转 3 MyBatis动态SQL ...

  3. 对比Jira/禅道后,我们为什么选择Leangoo做敏捷项目管理?

    一.敏捷团队的3大隐形痛点 我曾带领过一个6人的Scrum团队,迭代经常遇到: 需求变更黑洞:客户口头需求未及时同步,开发完成后才发现理解偏差(案例:某次迭代因此浪费32人日) 进度监控盲区:用Exc ...

  4. 启智树提高组day1T1 3436 : A:Doughnut

    启智树提高组day1T1 3436 : A:Doughnut 原题传送门 题目描述 Aloisia有很多很多甜甜圈.有一天,她在地上画了n+1个格子,想从第1个格子跳到第n+1个格子.规则是,Aloi ...

  5. SQL Server 2025 预览版新功能点评

    T-SQL 语言增强 正则表达式 (Regex) 支持 功能概述: SQL Server 2025 在 T-SQL 中原生引入了 POSIX 兼容的正则表达式支持,通过内置函数(如 REGEXP_LI ...

  6. 使用hive数据查询小结

    业务背景: 公司大数据查询需要通过hive查询和分析一些数据 产品提出业务分析需求: 我的处理方式: 接到需求就想怎么写SQL语句,然后不断调整SQL语句进行验证,最后这个需求写了170行的SQL语句 ...

  7. Spring Cloud Gateway实现分布式限流和熔断降级

    小伙伴们,你们好呀!我是老寇!一起学习学习gateway限流和熔断降级 一.限流 思考:为啥需要限流? 在一个流量特别大的业务场景中,如果不进行限流,会造成系统宕机,当大批量的请求到达后端服务时,会造 ...

  8. 开源共建 | TIS整合数据同步工具ChunJun,携手完善开源生态

    TIS整合ChunJun实操 B站视频: https://www.bilibili.com/video/BV1QM411z7w5/?spm_id_from=333.999.0.0 一.ChunJun ...

  9. PHP中设置时区方法

    在程序PHP 5以上版本的程序代码中使用函数ini_set('date.timezone','Asia/Shanghai');或者date_default_timezone_set('Asia/Sha ...

  10. 可以安装成功的red5资源

    找了好久,只有这个可用 https://download.csdn.net/download/haiwalt/8600781 注意下 RED5_HOME 路径是运行exe文件后   有个  D:\Re ...