Maven 入门指南

Posted by Marlin on December 19, 2025

Maven 入门指南

1. 什么是 Maven

Apache Maven 是一个项目构建和管理的工具,它基于项目对象模型(Project Object Model,简称 POM)的概念,通过一段描述信息来管理项目的构建、报告和文档。Maven 主要用于 Java 项目,但也可以用于其他编程语言。

2. Maven 的作用

  • 方便的依赖管理
  • 标准的项目构建流程
  • 统一的项目结构

3. 依赖管理

3.1 Maven 坐标

Maven 中的坐标是资源(jar)的唯一标识,通过该坐标可以唯一定位资源位置。
使用坐标来定义项目或引入项目中需要的依赖。

Maven 坐标主要组成:

  • Group ID(组ID):通常是组织或公司的域名倒置,例如 com.example。
  • Artifact ID(工件ID):项目的名称或模块的名称。
  • Version(版本号):项目的版本号,例如 1.0.0。
    • snapshot 版本:表示开发中的版本,通常以 -SNAPSHOT 结尾,例如 1.0.0-SNAPSHOT。
    • release 版本:表示稳定的发布版本,例如 1.0.0。

3.2 依赖配置

  • 依赖:指当前项目运行所需的jar包,一个项目中可以引入多个依赖。
    • 配置:
        1. 在 pom.xml 中编写<dependencies>标签
        1. <dependencies>标签中添加<dependency>标签引入坐标
        1. 定义坐标的 <groupId><artifactId><version> 标签
        1. 点击刷新按钮,引入最新加入的坐标
  • 排除依赖:指主动断开依赖的资源,被排除的资源无需指定版本。
    • 配置:
        1. <dependency>标签中添加<exclusions>标签
        1. <exclusions>标签中添加<exclusion>标签排除坐标
        1. 定义坐标的 <groupId><artifactId> 标签

3.3 示例

pom.xml:项目对象模型文件,定义了项目的基本信息、依赖关系、构建配置等。

目录结构: com.zzyl/ ├── pom.xml # 父项目的 POM 文件 └── zzyl-service/ └── pom.xml # 子模块 zzyl-service 的 POM 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
    <!-- 项目对象模型 POM  -->
    <!-- 描述当前项目 -->
    <parent>
        <groupId>com.zzyl</groupId>  <!-- 父项目的组ID -->
        <artifactId>zzyl</artifactId>  <!-- 父项目的工件ID -->
        <version>1.0.1</version>  <!-- 父项目的版本号 -->
    </parent>
    <modelVersion>4.0.0</modelVersion>  <!-- POM 模型版本 -->

    <artifactId>zzyl-service</artifactId>  <!-- 当前项目的工件ID -->

    <properties>
        <maven.compiler.source>11</maven.compiler.source>  <!-- Java 源代码版本 -->
        <maven.compiler.target>11</maven.compiler.target>  <!-- Java 目标代码版本 -->
    </properties>


    <!-- 依赖管理模型 Dependency -->
    <!-- 描述当前项目的依赖信息 -->
    <dependencies>
        <dependency>
            
            <groupId>common-io</groupId>  <!-- 依赖的组ID -->
            <artifactId>commons-io</artifactId>  <!-- 依赖的工件ID -->
            <version>2.16.1</version>  <!-- 依赖的版本号 -->

            <!-- 排除依赖 Exclusion -->
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>  <!-- 排除的依赖组ID -->
                    <artifactId>commons-logging</artifactId>  <!-- 排除的依赖工件ID -->
                </exclusion>
            </exclusions>

        </dependency>
    </dependencies>

4. 项目构建流程

4.1 生命周期

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

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

  • clean: 清理生命周期,负责项目的清理工作。包括:clean 阶段。
  • default: 默认生命周期,负责项目的构建工作。包括:compile、test、package、install 等阶段。
  • site: 站点生命周期,负责项目站点的生成。包括:site 阶段。

每个生命周期由一系列 阶段(phase) 组成,每个阶段代表构建过程中的一个步骤。
常用的生命周期阶段包括:

  • clean: 清理项目,删除之前构建生成的文件。
  • compile: 编译项目的源代码。
  • test: 运行测试代码
  • package: 打包编译后的代码,生成可发布的格式(如 JAR、WAR)。
  • install: 将打包好的文件安装到本地仓库,以供其他项目使用。

注意:在同一套声明周期中,当运行后面的阶段时,前面的阶段会被自动执行。
例如,运行install阶段时,compiletestpackage等阶段都会被依次执行。

4.2 构建命令

  • mvn clean:执行 clean 生命周期,清理项目。
  • mvn compile:执行 compile 阶段,编译源代码。
  • mvn test:执行 test 阶段,运行测试代码。
  • mvn package:执行 package 阶段,打包项目。
  • mvn install:执行 install 阶段,安装到本地仓库。

注意:在命令行直接运行mvn命令时,默认执行的是 default 生命周期。命令行中运行maven命令时,使用的jdk版本是环境变量JAVA_HOME指定的版本。