Maven基础

         Maven是一款用于管理和构建Java项目的工具,是apache旗下的一个开源项目。


目录

Maven的作用

Maven概述

介绍

安装

IDEA集成Maven

创建Maven项目

Maven坐标

导入Maven项目

依赖管理

依赖配置

依赖排除

生命周期

测试

单元测试

案例

断言

常见注释

依赖范围


Maven作用
  1. 依赖管理:方便快捷的管理项目依赖的资源(jar包)

  2. 项目结构:标准化的跨平台(linux、Windows、MacOS)的自动化项目构建方式

  3. 统一项目结构:提供标准、统一的项目结构

Maven概述
介绍
  • Apache Maven是一个项目管理构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。

  • 作用:

    • 方便的依赖管理

    • 白哦准的项目构建流程

    • 统一的项目结构

  • 官网:Welcome to Apache Maven – Maven

  • 仓库:用于存储资源,管理各种jar包。

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

    • 中央仓库:由Maven团队维护的全球唯一的。仓库地址:Central Repository:

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

    • 查找顺序:本地仓库 -> 远程仓库 -> 中央仓库

安装
  1. 解压 apache-maven-3.9.4-bin.zip

  2. 配置本地仓库:修改 conf/settings.xml 中的 <localRepository>为一个指定目录

    <localRepository>F:\develop\apache-maven-3.9.4-bin\apache-maven-3.9.4\mvn_repo</localRepository>

  3. 配置阿里云私服:修改 conf/settings.xml 中的 <mirrors> 标签,为其添加如下子标签:

    ​
    <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
  4. 配置环境变量:MAVEN_HOME为maven的解压目录,并将其bin目录加入PATH环境变量。

  5. 测试:打开命令行,输入“mvn -v”,查看是否配置成功

IDEA集成Maven
创建Maven项目
  • 配置Maven环境(全局)

  • 创建Maven项目

    1. 创建模块,选择New Module,并填写模块信息,选择构建工具为Maven,点击create,创建完成

    2. 编写HelloWord,并运行

Maven坐标
  • 什么是坐标:

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

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

  • Maven坐标主要组成:

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

    • artifactId:定义当前Maven项目名称(通常是模块名称,例如: order-version、goods-service)

    • version:定义当前项目版本号

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

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

    <groupId>Leaning</groupId>
        <artifactId>maven-project01</artifactId>
        <version>1.0-SNAPSHOT</version>
导入Maven项目
  • 方式一:File -> Project Structure -> Modules -> Import Module ->选择maven项目的pom.xml。

  • 方式二:Maven面板 -> +(Add Maven Projects) -> 选择maven项目的pom.xml。

  • 注意:

    • 建议将要导入的maven项目复制到你的项目目录下

    • 建议选择maven项目的pom.xml文件进行导入

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

  • 配置:

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

    2. 在<dependencies>标签中,使用<dependency>引入坐标

    3. 定义坐标的 groupId ,artifactId ,version

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

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.4</version>
        </dependency>
    </dependencies>
依赖排除
  • 依赖排除:指主动断开依赖的资源,被排除的资源无需指定版本。

  • 标签:<exclusion></exclusion>

 <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.1.4</version>
​
            <!-- 排除依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>io.micrometer</groupId>
                    <artifactId>micrometer-observation</artifactId>
                </exclusion>
            </exclusions>
​
        </dependency>
    </dependencies>

注意事项

  • 一旦依赖配置变更了,记得重新加载

  • 引入的依赖本地仓库不存在,记得联网

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

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

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

    • clean:清理工作。

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

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

  • 主要关注五个生命周期的阶段:clean , compile , test , package , install

    • clean:移除(清理)上一次构建生成的文件

    • compile :编译项目源代码

    • test :使用合适的单元测试框架运行测试(junit)

    • package :将编译后的文件打包,如jar、war等

    • install :安装项目到本地仓库

注意:在同一套(clean、default、site为三套,同一套)生命周期中,当运行后面的阶段时,前面的阶段都会运行。

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

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

    2. 在命令行中,通过命令执行。输入"mvn clean""mvn compile"...即可

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

  • 阶段划分:单元测试、集成测试、系统测试、验收测试。

    • 单元测试

      • 介绍:对软件的基本组成单元进行测试,最小测试单元。

      • 目的:检验软件基本组成单元的正确性。

      • 测试方法:白盒测试

      • 测试人员:开发人员

      集成测试

      • 介绍:将已分别通过测试的单元,按设计要求组合成系统或子系统,再进行的测试。

      • 目的:检查单元之间的协作是否正确。

      • 测试方法:灰盒测试

      • 测试人员:开发人员

      系统测试

      • 介绍:对已经集成好的软件系统进行彻底的测试。

      • 目的:验证软件系统的正确性、性能是否满足指定的要求。

      • 测试方法:黑盒测试

      • 测试人员:测试人员

      验收测试

      • 介绍:交付测试,是针对用户需求、业务流程进行的正式的测试。

      • 目的:验证软件系统是否满足验收标准。

      • 测试方法:黑盒测试

      • 测试人员:客户/需求方

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

    • 白盒测试

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

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

      黑盒测试

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

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

      灰盒测试

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

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

  • 原则:编写测试方法时,要尽可能覆盖业务方法中所有可能的情况(尤其是边界值)

  • JUnit:最流行的 Java 测试框架之一,提供了一些功能,方便程序进行单元测试(第三方公司提供)。

  • main方法测试:

    • 测试代码与源代码未分开,难以维护

    • 一个方法测试失败,一个像后面方法

    • 无法自动化测试,得到测试报告

  • JUnit单元测试:测试类中方法的正确性

    • 测试代码与源代码分开,便于维护

    • 可以根据需要进行自动化测试

    • 可自动分析测试结果,产出测试报告

案例
  1. 在pom.xml中,引入JUnit的依赖

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

  3. 运行单元测试(测试通过:绿色;测试失败:红色)。

注意:JUnit单元测试类命名规范为:XxxxxTest【规范】。JUnit单元测试的方法,必须声明为 public void 【规定】。

断言
  • 断言:JUnit提供了一些辅助方法,用来帮我们确定被测试的方法是否按照预期的效果正常工作,这种方法称为断言。

  • 为什么使用断言

    • 单元测试方法运行不报错,不代表业务方法没问题。

    • 通过断言可以检测方法运行结果是否和预期一致,从而判断业务方法的正确性。

断言方法描述
Assertions.assertEquals(Object exp, Object act,String msg)检查两个值是否相等,不相等就报错。
Assertions.assertNotEquals(Object unexp, Object act,String msg)检查两个值是否不相等,相等就报错。
Assertions.assertNull(Object act, String msg)检查对象是否为null,不为null,就报错。
Assertions.assertNotNull(Object act, String msg)检查对象是否不为null,为null,就报错。
Assertions.assertTrue(Boolean condition, String msg)检查条件是否为true,不为true,就报错。
Assertions.assertFalse(Boolean condition, String msg)检查条件是否为false,不为false,就报错。
Assertions.assertThrows(Class expType, Executable exec, String msg)检查程序运行抛出的异常,是否符合预期。

提示:上述方法形参中的最后一个参数msg,标识错误提示信息,可以不指定(有对应的重载方法)。

常见注释
  • 在JUnit中还提供了一些注解,还增强其功能,常见注解有以下几个:

注解说明备注
@Test测试类中的方法用它修饰才能成为测试方法,才能启动执行单元测试
@ParameterizedTest参数化测试的注解(可以让单个测试运行多次,每次运行时仅参数不同)用了该注解,就不要@Test注解了
@ValueSource参数化的测试的参数来源,赋予测试方法参数与参数测试注解配合使用
@DisplayName指定测试类、测试方法显示的名称(默认为类名、方法名)
@BeforeEach用来修饰一个实例方法,该方法会在每一个测试方法执行前执行一次初始化资源(准备工作)
@AfterEach用来修饰一个实例方法,该方法会在每一个测试方法执行后执行一次释放资源(清理工作)
@BeforeAll用来修饰一个静态方法,该方法会在所有测试方法之前只执行一次初始化资源(准备工作)
@AfterAll用来修饰一个静态方法,该方法会在所有测试方法之后只执行一次释放资源(清理工作)
依赖范围
  • 依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope>...</scope>设置其作用范围。

  • 作用范围:

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

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

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

  • scope值

scope值主程序测试程序打包(运行)范例
compile(默认)yyylog4j
test-y-junit
providedyy-servlet-api
runtime-yyjdbc驱动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值