Maven 构建命令详解

news/2025/2/8 13:27:33/

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/news/1570328.html

相关文章

C#面试常考随笔14: 方法如何传递不定数量的参数?params关键字怎么使用?

使用params关键字,就可以像python传参那样传递多个参数,类似元组 主要作用 params 关键字的主要作用是让方法可以接受不定数量的参数,而不需要在调用方法时显式地创建数组来传递多个参数。这为方法调用提供了更大的灵活性,使得代…

Windows图形界面(GUI)-QT-C/C++ - QT Dial

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、控件概述 1.1 什么是QDial控件 1.2 使用场景 二、核心特性 2.1 基础属性 2.2 外观定制 2.3 高级特性 三、信号与槽机制 3.1 核心信号 3.2 实时响应 四、实践应用 4.1 音量…

一文吃透!DataStage 全面概述与核心知识要点大公开

目录 第一章 DataStage 基础知识 1.1 DataStage 定义及特点 1.2 DataStage 功能模块 1.3 DataStage 应用场景 第二章 DataStage 核心技术 2.1 数据抽取技术 2.2 数据转换技术 2.3 数据加载技术 第三章 DataStage 操作实践 3.1 环境搭建与配置 安装 DataStage 软件 配…

使用外骨骼灵活远程控制协作机器人案例

外骨骼控制器采用可调节结构,简化了机器人编程,使协作机器人 FR3 的远程控制变得容易。 一、引言 在开发机器人手臂或双臂系统的应用程序时,经常会遇到以下挑战: 1. 使用拖动和示教进行定位的困难:拖动和示教功能通常…

蓝桥杯嵌入式备赛(三)—— LED +按键 + LCD

目录 一、LED1、原理图介绍2、程序代码 二、按键1、原理图介绍2、程序代码 三、LCD1、原理图介绍2、程序代码 一、LED 1、原理图介绍 如果所示,STM32G431RBT6中有八个LED,由八个GPIO控制,分别为PC8-15,当输出为低电平时点亮。其中…

python下载的包都在哪里

python下载的包所在位置 打开python的安装文件夹 找到Lib文件夹双击打开 找到site-packages文件夹打开,然后显示的就是下载的所有python包

python12-字段串操作

课程:B站大学 记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化 字符串那些事儿 字符串转换类字符串对齐类字符串去除空白类字符串分割类字符串连接类编码解码…

JUC常见类

JUC是java.util.concurrent的简称,当中有我们需要熟知的常见类,此文为你带来相关知识 前面我们学习了3种创建线程的方法,分别是: 继承Thread类,重写run方法实现Runnable接口,重写run方法创建线程池&#x…