核心概念与架构

Maven 是一个基于 项目对象模型 (POM) 的 Java 项目管理和构建工具。

Maven 通过中央仓库、远程仓库和本地仓库的配合来管理项目的依赖。

  • 本地仓库:位于 ~/.m2/repository,存放已下载的依赖。
  • 远程 (镜像) 仓库:如阿里云镜像,用于加速国内下载。
  • 中央仓库:Maven 官方维护的默认仓库。

Coordinates:每个依赖由“三坐标”唯一确定

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.11</version>
</dependency>

Properties:定义“全局变量”

properties 标签允许你定义一些常量,避免在 pom.xml 中多次硬编码相同的版本号。如果以后想升级版本,只需要改一个地方。

<properties>
    <spring.version>6.1.0</spring.version>
    <mysql.connector.version>8.0.33</mysql.connector.version>
</properties>
 
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>

DependencyManagement:版本仲裁中心

这是父项目(Root POM)中最常用的标签。它的核心逻辑是:“声明但不引入”

  • 不真正下载依赖:dependencyManagement 里写了依赖,Maven 不会去下载 jar 包。
  • 统一版本: 子项目在引用这些依赖时,不需要写版本号。子项目会自动继承父项目中声明的版本。
  • 灵活覆盖: 如果子项目确实需要一个特殊版本,可以直接在子 POM 中写明版本号,这会覆盖掉父项目的约定。
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>5.10.0</junit.version>
</properties>
 
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

标准项目结构

Maven 约定优于配置,统一的结构让项目迁移和协作极其简单。

.
├── pom.xml                # 项目核心配置文件
└── src
    ├── main
    │   ├── java           # 业务 Java 源码
    │   └── resources      # 配置文件、静态资源
    └── test
        └── java           # 单元测试源码

Maven 常用命令集锦

🚀 基础构建生命周期

命令说明
mvn clean清理:删除 target 目录
mvn compile编译:编译主源码
mvn test测试:运行单元测试
mvn package打包:生成 jar 或 war 包
mvn install安装:将包发布到本地仓库,供本地其他项目引用
mvn deploy部署:将最终的包上传到私服/远程仓库

💡 进阶组合与参数

  • 常用组合mvn clean install -DskipTests (清理并安装,跳过测试)
  • 多模块加速
    • -pl <name>:指定构建某个模块。
    • -am:同时构建所依赖的模块 (Also Make)。
    • -T 4:使用 4 线程并行构建。
  • 诊断工具
    • mvn dependency:tree:查看依赖冲突必备。
    • mvn help:effective-pom:查看最终生效的配置。

Spring Boot 专属命令

如果你正在进行 Spring Boot 开发,这两个命令非常高频:

  • mvn spring-boot:run:快速启动应用。
  • mvn spring-boot:run -Dspring-boot.run.profiles=dev:指定运行环境。

环境配置与 IDEA 集成

⚙️ 本地安装

  1. 环境变量:设置 MAVEN_HOME,并在 Path 中添加 %MAVEN_HOME%\bin
  2. 修改 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>
</mirrors>

🖥️ IDEA 最佳实践

  • 设置:在 File | Settings | Build, Execution, Deployment | Build Tools | Maven 中手动指定自己的 Maven 路径和 settings.xml
  • 初始化:创建 Spring Boot 项目时,可将 Server URL 改为 https://start.aliyun.com 以获得更快的响应。