1. Maven基础

1.1 maven简介

1.1.1 maven的主要功能

  • 提供了一套标准化的项目结构

  • 提供了一套标准化的构建流程(编译,测试,打包,发布……)

  • 提供了一套依赖管理机制

1.1.2Maven模型

  • 项目对象模型 (Project Object Model)
  • 依赖管理模型(Dependency)
  • 插件(Plugin)

1.2 仓库

仓库分类:

  • 本地仓库:自己计算机上的一个目录
  • 中央仓库:由Maven团队维护的全球唯一的仓库
  • 远程仓库(私服):一般由公司团队搭建的私有仓库

mvn先从本地仓库找jar包,找不到后去远程仓库找。远程仓库如果没有,就会从中央仓库下载,下载到以后先保存到远程仓库一份,再给本地仓库一份

1.3 Maven安装配置

1.3.1 配置环境变量

此电脑 右键 --> 高级系统设置 --> 高级 --> 环境变量

在系统变量处新建一个变量 MAVEN_HOME,值为maven软件的目录

Path 中进行配置,添加 %MAVEN_HOME%\bin

打开cmd,输入 mvn -version 验证环境变量配置是否成功

image-20210726164306480.png

1.3.2 配置本地仓库

修改 conf/settings.xml 中的 <localRepository></localRepository> 为一个指定目录作为本地仓库,用来存储jar包。

  <localRepository>D:/Programing/maven/.m2/repository/repository_mos</localRepository>

配置阿里云私服

注意,下面的配置可能会发生变化,访问【 maven.aliyun.com 】查看最新的阿里云私服地址

修改 conf/settings.xml 或单独的配置文件 中的 \标签,为其添加如下子标签:

  <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
  </mirror>

1.4 Maven基本使用

1.4.1 Maven 生命周期

Maven 构建项目生命周期描述的是一次构建过程经历了多少个事件

Maven 对项目构建的生命周期划分为3套:

(1) clean 生命周期

用来清除垃圾

  • mvn clean 用来清除垃圾

(2) default生命周期

项目源码阶段到项目的部署阶段

  • mvn compile 编译java代码

  • mvn test 执行单元测试

  • mvn package 先执行compile,然后把字节码打包成项目

  • mvn install 先执行package,然后把我们的项目安装到本地仓库

开发中单元测试必须用junit4.12以上

(3) site生命周期

主要用于产生报告,发布站点等。(一般不会用到。)

同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下:

image-20210726173153576.png

  • 当我们执行 install(安装)命令时,它会先执行 compile命令,再执行 test 命令,再执行 package 命令,最后执行 install 命令。

  • 当我们执行 package (打包)命令时,它会先执行 compile 命令,再执行 test 命令,最后执行 package 命令。

  • 默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的:

image-20210726173619353.png

1.5 IDEA使用Maven

1.5.1 IDEA配置Maven环境

我们需要先在IDEA中配置Maven环境:

  • 选择 IDEA中 File --> Settings

  • 搜索 maven

  • 设置 IDEA 使用本地安装的 Maven,并修改配置文件路径

1.5.2 Maven 坐标详解

Maven 中的坐标是【资源的唯一标识】,使用坐标来定义项目或引入项目中需要的依赖

Maven 坐标主要组成

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:link.xiaomo)
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
  • version:定义当前项目版本号

注意:

  • 上面所说的资源可以是插件、依赖、当前项目。
  • 我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

1.5.3 IDEA 导入 Maven项目

  • 选中对应项目的pom.xml文件,双击即可

  • 如果没有Maven面板,选择
    View --> Appearance --> Tool Window Bars

** 可以安装Maven-Helper插件,实现通过右键目录结构进行相关命令操作**

1.6 依赖管理

1.5.1 使用坐标引入jar包

使用坐标引入jar包的步骤:

  • 在项目的 pom.xml 中编写 \ 标签

  • 在 \ 标签中 使用 \ 引入坐标

  • 定义坐标的 groupId,artifactId,version

image-20210726193105765.png

  • 点击刷新按钮,使坐标生效
    image-20210726193121384.png

注意:

快捷方式导入jar包的坐标:

每次需要引入jar包,都去对应的网站进行搜索是比较麻烦的,接下来给大家介绍一种快捷引入坐标的方式

  1. 在 pom.xml 中 按 alt + insert,选择 Dependency
  2. 在弹出的面板中搜索对应坐标,然后双击选中对应坐标
  3. 点击刷新按钮,使坐标生效

自动导入设置:

上面每次操作都需要点击刷新按钮,让引入的坐标生效。当然我们也可以通过设置让其自动完成

  1. 选择 IDEA中 File --> Settings
  2. 在弹出的面板中找到 Build Tools
    . 选择 Any changes,点击 ok 即可生效

1.5.2 依赖范围

只有驱动包 => runtime(可加不加)

单元测试相关 => test

servlet/jsp => provided

其他 => compile(可以省略)

通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。

  • scope 取值
依赖范围 编译classpath 测试classpath 运行classpath 例子
compile Y Y Y logback
test -- Y - Junit
provided Y Y - servlet-api
runtime - Y Y jdbc驱动
system Y Y - 存储在本地的jar包
  • compile :作用于编译环境、测试环境、运行环境。
  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值
  • provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错
  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题

注意:

  • 如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。
如人饮水,冷暖自知。
最后更新于 2023-08-05