1. 介绍

项目管理和构建工具,它基于项目对象模型(Project Object Model , 简称: POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

官网:https://maven.apache.org/

2. 作用

  1. 方便的依赖管理

  2. 统一的项目结构

  3. 标准的项目构建流程

3. 配置

  • 配置本地仓库

在自己计算机上新一个目录(mvn_repo),进入到conf目录下修改settings.xml配置文件,将本地仓库的文件路径放置于此

  • 配置环境变量

以安装包路径来配置,输入mvn -v 弹出输出,即代表配置成功

4. IDEA使用maven

4.1 新建maven项目

  1. 选择 IDEA中 File => close project => Customize => All settings => Build,Execution,Deployment => Build Tools => Maven

  1. 创建一个空项目 => 选择小齿轮 => 选择 Project Structure

  1. 创建模块,File => Module => java => 填写模块的基本信息

4.2 导入已有的maven项目

  • 方式一:File -> Project Structure -> Modules -> Import Module -> 选择maven项目的pom.xml

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

5. Maven项目介绍

5.1 目录结构

maven-project01
        |---  src  (源代码目录和测试代码目录)
               |---  main (源代码目录)
                        |--- java (源代码java文件目录)
                        |--- resources (源代码配置文件目录)
              |---  test (测试代码目录)
                        |--- java (测试代码java目录)
                        |--- resources (测试代码配置文件目录)
        |--- target (编译、打包生成文件存放目录)

5.2 pom.xml文件

POM (Project Object Model) :指的是项目对象模型,用来描述当前的maven项目。

  • <project>``:pom文件的根标签,表示当前maven项目

  • <modelVersion>:声明项目描述遵循哪一个POM模型版本

    • 虽然模型本身的版本很少改变,但它仍然是必不可少的。目前POM模型版本是4.0.0

  • 坐标 :

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

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

    • <version>:定义当前项目版本号(SNAPSHOT为开发版本,RELEASE为发行版本)

  • <maven.compiler.source> :编译JDK的版本

  • <maven.compiler.target> :运行JDK的版本

  • <project.build.sourceEncoding> : 设置项目的字符集

5.3 依赖管理

导入依赖:打开pom.xml文件,在< project >标签内写入如下模板信息

<dependencies>
    <!-- 依赖模块 -->
    <dependency>
        <groupId>org.springframework</groupId>  <!-- 输入依赖的 组织名称 -->
        <artifactId>spring-context</artifactId> <!-- 输入依赖的 名称 -->
        <version>6.1.4</version>                <!-- 输入依赖的 版本 -->
    </dependency>
</dependencies>

mvn的中央仓库(https://mvnrepository.com/

移除依赖:导入A依赖时,可能会一起导入B、C依赖。若要移除C依赖,可在A依赖的 < dependency >标签中加入 exclusions标签

<dependencies>
    <!-- 依赖模块 -->
    <dependency>
        <groupId>org.springframework</groupId>  <!-- 输入依赖的 组织名称 -->
        <artifactId>spring-context</artifactId> <!-- 输入依赖的 名称 -->
        <version>6.1.4</version>                <!-- 输入依赖的 版本 -->
    </dependency>
    
    <!--排除依赖, 主动断开依赖的资源-->
    <exclusions>
        <exclusion>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-observation</artifactId>
        </exclusion>
    </exclusions>
</dependencies>

5.4 Lifecycle

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

  • clean:移除上一次构建生成的文件

  • compile:编译项目源代码

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

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

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