Maven 构建命令详解

ops/2025/2/12 21:42:26/

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 可以分析依赖关系,帮助解决依赖冲突。

熟练掌握这些命令,可以极大提高开发效率,优化构建流程!🚀


http://www.ppmy.cn/ops/157095.html

相关文章

路由器如何进行数据包转发?

路由器进行数据包转发的过程是网络通信的核心之一,主要涉及以下几个步骤: 接收数据包:当一个数据包到达路由器的一个接口时,它首先被暂时存储在该接口的缓冲区中。 解析目标地址:路由器会检查数据包中的目标IP地址。…

PostgreSQL :如何实现 rownum 的行号查询效果

在 Oracle 数据库中,Rownum 是非常常用的一个查询输出,通过 rownum 可以为结果记录增加一个类似行号的标识,在 PostgreSQL 数据库中缺省没有 Rownum 这个功能,但是可以通过分析函数来实现类似的效果。 select row_number() OVER …

想成为FPGA工程师需要学什么?主要工作内容是什么?

近年来,FPGA行业发展迅速,许多企业正在加大对FPGA人才的需求,特别是数字设计工程师,成为许多公司争抢的“香饽饽”。那么,想成为FPGA工程师,应该掌握哪些技能?他们的工作内容又是什么呢&#xf…

微服务架构中的事件驱动设计:使用 Kafka 和 Apache Pulsar 实现高效的事件流管理

在现代微服务架构中,事件驱动设计(Event-Driven Architecture, EDA)已成为一种流行的架构模式,它能够帮助处理系统中复杂的事件流和异步通信问题。事件驱动架构的核心理念是通过事件(Event)作为系统各个部分…

[Deepseek+Heygen+剪映]快速生产数字人讲解的视频内容

在当今这个视频内容爆炸的时代,如何快速、高效地生产高质量的视频内容成为了许多内容创作者的焦点。特别是对于需要大量讲解类视频的场景,例如产品介绍、知识科普、在线教育等,传统真人出镜的方式往往耗时耗力。 而 数字人 技术的出现&#…

苹果iPhone 16 Pro Max上手体验:性能极致释放

外观:精致与科技感并存 iPhone 16 Pro Max的外观在延续经典的基础上进行了细节优化。钛金属中框采用微喷砂工艺,手感圆润且质感细腻,不过容易留下指纹。其提供了四种配色,其中沙漠钛金属色独特且富有质感,阳光下反射出…

【starrocks学习】之将starrocks表同步到hive

目录 方法 1:通过HDFS导出数据 1. 将StarRocks表数据导出到HDFS 2. 在Hive中创建外部表 3. 验证数据 方法 2:使用Apache Spark同步 1. 添加StarRocks和Hive的依赖 2. 使用Spark读取StarRocks数据并写入Hive 3. 验证数据 方法 3:通过…

Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)

一、协程 1.1、协程 协程,Coroutines,也叫作纤程(Fiber) 协程,全称是“协同程序”,用来实现任务协作。是一种在线程中,比线程更加轻量级的存在,由程序员自己写程序来管理。 当出现IO阻塞时,…