Skip to content

Maven 使用:Java 项目的构建利器

Maven 是 Java 项目构建的事实标准。虽然 Gradle 更灵活,但 Maven 的稳定性、插件生态和团队协作优势,让它仍然是大多数项目的首选。

核心概念

概念说明
坐标GAV(GroupId、ArtifactId、Version)唯一标识依赖
仓库本地仓库 + 远程仓库(阿里云/Maven Central)
生命周期clean、compile、test、package、install、deploy
依赖传递A 依赖 B,B 依赖 C,A 自动获得 C

常用命令

bash
mvn compile              # 编译源代码
mvn test                 # 运行测试
mvn package              # 打包(不运行测试)
mvn clean package        # 先清理再打包
mvn install              # 安装到本地仓库
mvn deploy               # 发布到远程仓库
mvn dependency:tree      # 查看依赖树
mvn dependency:analyze   # 分析未使用依赖

跳过测试

bash
# 跳过测试编译(不编译测试)
mvn package -Dmaven.test.skip=true

# 跳过测试运行(编译但跳过执行)
mvn package -DskipTests

依赖管理

依赖范围

scope编译测试运行打包
compile
test
provided
runtime
xml
<!-- Spring Boot web 起步依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Servlet API,仅编译和测试时需要,打包时不包含 -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>

依赖冲突

依赖冲突时,Maven 使用"最短路径优先"原则。如果想显式指定版本:

xml
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.76</version>
</dependency>

查看冲突:

bash
mvn dependency:tree -Dincludes=com.alibaba  # 只看某个依赖的传递依赖
mvn dependency:tree                        # 完整依赖树

私有仓库配置

~/.m2/settings.xml 里配置阿里云镜像加速:

xml
<mirrors>
    <mirror>
        <id>aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Aliyun Maven</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
</mirrors>

多模块项目

xml
<!-- 父 pom -->
<modules>
    <module>module-a</module>
    <module>module-b</module>
</modules>

<!-- 子模块 -->
<parent>
    <groupId>com.example</groupId>
    <artifactId>parent</artifactId>
    <version>1.0.0</version>
</parent>

插件配置

xml
<build>
    <plugins>
        <!-- Maven 编译插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>17</source>
                <target>17</target>
            </configuration>
        </plugin>

        <!-- Spring Boot 打包插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

总结

  1. 统一版本:父 POM 管理版本,子模块继承
  2. 合理依赖范围:用 provided 避免打包无用依赖
  3. 依赖分析mvn dependency:analyze 定期检查
  4. 镜像加速:配置阿里云仓库,下载速度翻倍

Maven 是工具,用好它让你的构建流程事半功倍。

基于 VitePress 构建