关于Maven构建命令使用详解

 更新时间:2025年02月28日 10:04:26   作者:drebander  
Maven构建命令详解:mvnclean、mvncompile、mvntest、mvnpackage、mvninstall、mvndeploy及其他常用命令,帮助开发者高效管理项目构建流程

1. Maven 构建命令概述

Maven 是 Java 生态中最流行的构建工具之一,它提供了一套标准化的构建命令,使得开发者可以轻松管理项目的编译、测试、打包、安装和部署等任务。

本篇文章将深入解析 Maven 中最常用的构建命令,包括:

  • mvn clean
  • mvn compile
  • mvn test
  • mvn package
  • mvn install
  • mvn deploy
  • 其他常见命令,如 mvn dependency:treemvn help:effective-pom 等。

2. Maven 构建命令详解

2.1 mvn clean

作用:清除 target/ 目录,删除之前构建的文件,确保下一次构建的干净环境。

mvn clean

执行过程

  • 删除 target/ 目录
  • 移除编译生成的 class 文件、打包的 JAR 文件等

适用场景

  • 在重新构建项目之前,避免旧的编译文件影响新版本。

示例

mvn clean package

效果

  • 先清理 target/ 目录,再进行打包。

2.2 mvn compile

作用:编译 src/main/java 目录下的源代码,并生成 .class 文件到 target/classes/ 目录。

mvn compile

执行过程

  • 解析 pom.xml
  • 下载项目依赖(如果依赖不存在)
  • 编译 src/main/java 目录下的 Java 源代码
  • 生成 .class 文件到 target/classes/

适用场景

  • 当需要仅编译代码而不执行测试时。

示例

mvn clean compile

效果

  • 先清理 target/ 目录,然后编译代码。

2.3 mvn test

作用:编译 src/test/java 目录下的测试代码,并运行单元测试(JUnit、TestNG)。

mvn test

执行过程

  • 先执行 mvn compile
  • 编译 src/test/java 目录下的测试代码
  • 运行测试(JUnit 或 TestNG)

适用场景

  • 运行项目中的单元测试,确保代码逻辑正确。

示例

mvn clean test

效果

  • 先清理 target/ 目录,然后运行所有测试。

2.4 mvn package

作用:将编译后的代码打包(如 JAR、WAR)到 target/ 目录。

mvn package

执行过程

  • 先执行 mvn test
  • 打包 target/classes/ 下的文件为 JAR 或 WAR

适用场景

  • 当需要生成可部署的 JAR/WAR 文件时。

示例

mvn clean package

效果

  • 清理旧的 target/ 目录,编译代码,运行测试,最终打包 JAR/WAR。

2.5 mvn install

作用:将打包好的 JAR/WAR 文件安装到 本地 Maven 仓库~/.m2/repository/),供其他项目使用。

mvn install

执行过程

  • 先执行 mvn package
  • target/ 目录中的 JAR/WAR 文件复制到本地 Maven 仓库

适用场景

  • 当开发多个模块(Module)时,一个模块可以安装到本地仓库,以便另一个模块引用。

示例

mvn clean install

效果

  • 清理旧的构建,编译代码,运行测试,打包,并安装到本地仓库。

2.6 mvn deploy

作用:将构建好的 JAR/WAR 部署到 远程 Maven 仓库,如 Nexus、Artifactory。

mvn deploy

执行过程

  • 先执行 mvn install
  • 上传 target/ 目录中的 JAR/WAR 文件到远程 Maven 仓库

适用场景

  • 当开发的库需要在团队内部共享时,可以部署到私有仓库(如 Nexus)。

示例

mvn clean deploy

效果

  • 清理、编译、测试、打包,并上传到远程仓库。

3. 其他常用 Maven 命令

3.1 查看依赖树

作用:列出所有项目依赖,包括传递性依赖,帮助分析依赖冲突。

mvn dependency:tree

示例

mvn dependency:tree

输出

[INFO] com.example:my-app:jar:1.0-SNAPSHOT
[INFO] ├─ org.springframework:spring-core:jar:5.3.9:compile
[INFO] ├─ commons-logging:commons-logging:jar:1.2:compile

3.2 强制更新依赖

作用:强制更新所有依赖,确保拉取最新版本。

mvn clean install -U

3.3 显示 Maven 有效的 POM 配置

作用:查看合并后的 pom.xml,帮助调试依赖管理。

mvn help:effective-pom

3.4 跳过测试

作用:构建时跳过单元测试,提高构建速度。

mvn clean package -DskipTests

3.5 运行单个测试

作用:只运行指定的测试类,而不是运行所有测试。

mvn test -Dtest=MyTestClass

3.6 运行 Web 项目

作用:如果使用 tomcat7-maven-plugin,可以直接运行 Web 项目。

mvn tomcat7:run

4. Maven 常用命令总结

命令作用
mvn clean删除 target/ 目录,清理构建文件
mvn compile编译 src/main/java 目录中的代码
mvn test运行 src/test/java 目录下的测试代码
mvn package生成 JAR/WAR 文件
mvn install将 JAR/WAR 安装到本地 Maven 仓库
mvn deploy将 JAR/WAR 部署到远程仓库
mvn dependency:tree查看项目的依赖树
mvn clean install -U强制更新依赖
mvn help:effective-pom查看合并后的 POM 配置
mvn clean package -DskipTests跳过测试打包
mvn test -Dtest=MyTestClass只运行指定的测试类

5. 总结

  • Maven 提供了一套标准的构建命令,涵盖了 清理、编译、测试、打包、安装、部署 等功能。
  • 通过 mvn clean install 可以完成一次完整的构建,并安装到本地仓库。
  • 通过 mvn deploy 可以将构建好的 JAR/WAR 部署到远程仓库,供团队共享。
  • 通过 mvn dependency:tree 可以分析依赖关系,帮助解决依赖冲突。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现AES加密算法的简单示例分享

    Java实现AES加密算法的简单示例分享

    这篇文章主要介绍了Java实现AES加密算法的简单示例分享,AES算法是基于对密码值的置换和替代,需要的朋友可以参考下
    2016-04-04
  • Maven配置文件settings.xml的实现

    Maven配置文件settings.xml的实现

    Maven是一个用于构建和管理Java项目的强大工具,它依赖于设置文件来配置和管理其行为,其中最重要的之一便是settings.xml文件,本文主要介绍了Maven配置文件settings.xml的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Java RMI详细介绍及简单实例

    Java RMI详细介绍及简单实例

    这篇文章主要介绍了Java RMI详细介绍及简单实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • Java获取classpath根路径的三种方法

    Java获取classpath根路径的三种方法

    本文介绍了在Java中获取classpath根路径的三种方法:ClassLoader.getResource、Class.getResource和System.getProperty,每种方法都有其适用场景,开发者可以根据具体需求选择合适的方法,需要的朋友可以参考下
    2026-01-01
  • Spring中的自动装配机制详解

    Spring中的自动装配机制详解

    这篇文章主要介绍了Spring中的自动装配机制详解,自动装配就是会通过Spring的上下文为你找出相应依赖项的类,通俗的说就是Spring会在上下文中自动查找,并自动给Bean装配与其相关的属性,需要的朋友可以参考下
    2023-08-08
  • Java 实战交易平台项目之宠物在线商城系统

    Java 实战交易平台项目之宠物在线商城系统

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java实现一个宠物在线商城系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Springboot 整合 Java DL4J 实现文物保护系统的详细过程

    Springboot 整合 Java DL4J 实现文物保护系统的详细过程

    在数字化时代,文物保护尤为关键,本文介绍如何利用SpringBoot和Deeplearning4j构建一个图像识别的文物保护系统,系统采用卷积神经网络(CNN),能够识别文物的损坏情况,本文介绍Springboot 整合 Java DL4J 实现文物保护系统,感兴趣的朋友一起看看吧
    2024-10-10
  • JAVA如何自动下载SSL证书并导入到本地

    JAVA如何自动下载SSL证书并导入到本地

    这篇文章主要介绍了JAVA如何自动下载SSL证书并导入到本地问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java中的HashMap源码分析

    Java中的HashMap源码分析

    这篇文章主要介绍了Java中的HashMap源码分析,散列表是根据关键码值(Key value)而直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度,这个映射函数叫做散列函数,存放记录的数组叫做散列表,需要的朋友可以参考下
    2023-09-09
  • 详细分析JAVA8新特性 Base64

    详细分析JAVA8新特性 Base64

    这篇文章主要介绍了JAVA8新特性 Base64的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08

最新评论