📚 Maven 详解:从基础到进阶
🔖 1. Maven 是什么?
Maven 是一个 Java 项目管理和构建工具,用于 管理项目依赖、编译代码、打包项目、运行测试、部署项目 等工作。Maven 是 Apache 基金会的开源项目,具有 跨平台、自动化构建 和 灵活配置 的特点。
Maven 的核心功能:
- 依赖管理:自动下载项目所需的依赖库和插件。
- 项目构建:自动化编译、测试、打包、部署等流程。
- 项目标准化:统一项目结构和构建流程。
📋 2. Maven 的核心概念
✅ 2.1 POM(Project Object Model)
- POM 文件是 Maven 的核心配置文件,文件名为
pom.xml。 pom.xml定义了项目的 依赖、构建信息、插件、版本管理 等内容。
🔧 pom.xml 示例
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 项目信息 -->
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<!-- 依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.16</version>
</dependency>
</dependencies>
</project>
| 标签 | 描述 |
|---|---|
<groupId> | 项目所属的组织或公司 |
<artifactId> | 项目的唯一标识 |
<version> | 项目的版本号 |
<dependencies> | 项目依赖的库 |
✅ 2.2 Maven 仓库
Maven 仓库 是 存储依赖库和插件 的地方。分为三类:
| 类型 | 描述 |
|---|---|
| 本地仓库 | 存储在本地电脑上的仓库,默认路径为 ~/.m2/repository |
| 中央仓库 | 官方提供的公共仓库,地址为 https://repo.maven.apache.org/maven2 |
| 私有仓库 | 由企业或团队搭建的仓库 |
✅ 2.3 依赖坐标
每个 Maven 依赖都由 坐标 唯一标识,包括 groupId、artifactId、version 三个核心属性。
🔧 Spring Core 的依赖坐标示例
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.16</version>
</dependency>
| 属性 | 描述 |
|---|---|
groupId | 项目或组织的唯一标识 |
artifactId | 项目的唯一标识 |
version | 项目的版本号 |
✅ 2.4 生命周期(Lifecycle)
Maven 提供了 三套默认生命周期,包括 清理、构建、部署。
| 生命周期 | 描述 | 常用阶段 |
|---|---|---|
| clean | 清理项目的临时文件 | pre-clean、clean、post-clean |
| default | 核心的构建流程 | compile、test、package、install、deploy |
| site | 生成项目报告和站点 | site、site-deploy |
🔧 常用构建命令
| 命令 | 描述 |
|---|---|
mvn clean | 清理项目的临时文件 |
mvn compile | 编译项目 |
mvn test | 执行测试 |
mvn package | 打包项目 |
mvn install | 将项目安装到本地仓库 |
mvn deploy | 将项目部署到远程仓库 |
📦 3. Maven 依赖管理
Maven 会自动下载并管理项目的依赖库,避免手动下载 JAR 文件的麻烦。
✅ 3.1 添加依赖
🔧 添加 Spring Boot 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.7.5</version>
</dependency>
✅ 3.2 依赖范围(Scope)
Maven 提供了 五种依赖范围,用于控制依赖的可见性和生命周期。
| 范围 | 描述 | 适用阶段 |
|---|---|---|
compile | 默认范围,编译、测试、运行时均可见 | 编译、测试、运行 |
provided | 编译时可见,但运行时由容器提供 | 编译、测试 |
runtime | 仅在运行和测试时可见 | 测试、运行 |
test | 仅在测试阶段可见 | 测试阶段 |
system | 类似于 provided,但需要手动指定路径 | 编译、测试 |
📑 4. Maven 插件
Maven 插件扩展了构建过程的功能,可以执行 编译、测试、打包、部署 等操作。
✅ 常用插件
| 插件名称 | 描述 |
|---|---|
maven-compiler-plugin | 编译 Java 源码 |
maven-surefire-plugin | 执行单元测试 |
maven-jar-plugin | 打包项目为 JAR 文件 |
maven-war-plugin | 打包项目为 WAR 文件 |
🔧 配置 maven-compiler-plugin 插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
📐 5. Maven 多模块项目
Maven 支持 多模块项目,允许一个项目包含多个子模块。
✅ 父项目的 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>module-a</module>
<module>module-b</module>
</modules>
</project>
🎯 6. Maven 的优势
- 自动化依赖管理:无需手动下载 JAR 文件。
- 标准化项目结构:提高项目的可读性和可维护性。
- 跨平台支持:支持 Windows、Linux、macOS。
- 丰富的插件体系:支持编译、测试、打包、部署等操作。
⚙️ 7. 总结
| 功能 | 描述 |
|---|---|
| 依赖管理 | 自动下载和管理项目依赖 |
| 生命周期管理 | 统一的构建流程 |
| 插件扩展 | 通过插件实现编译、测试、打包等功能 |
| 多模块支持 | 支持多模块项目管理 |
1022

被折叠的 条评论
为什么被折叠?



