Apache Maven 3.10.0 常用 CLI 命令与工具详解

Apache Maven 3.10.0 常用 CLI 命令与工具详解,覆盖 mvn 版本信息、生命周期阶段、编译、依赖树、帮助与属性评估等真实回显,并给出常用目标速查表,均在 Ubuntu 22.04.5 与 JDK17 上实测

Apache MavenApache Maven2026/10/11

Apache Maven 3.10.0 常用 CLI 命令与工具详解

目标:详解 Apache Maven 3.10.0 的常用 CLI 命令与内置工具,包括版本信息、生命周期阶段、编译与验证、依赖分析、帮助与属性评估等,并给出常用目标速查表,所有命令与回显均在 Ubuntu 22.04.5 + JDK17 上实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(amd64)
  • JDK:OpenJDK 17.0.20.1
  • Maven:Apache Maven 3.10.0,$MAVEN_HOME/bin/mvn
  • 示例项目:com.example:demo:1.0.0(位于 /tmp/mvn-demo,含 pom.xml)
  • 本地仓库:/root/.m2/repository

二、工具概览

Maven CLI 本身是运行在 JVM 上的单个可执行程序 mvn,其「目标」分为两类:

  • 生命周期阶段(lifecycle phase):由默认生命周期定义的顺序化构建步骤,如 validate、compile、test、package、install。
  • 插件目标(plugin goal):由具体插件提供的能力,记作 <插件>:<目标>(如 dependency:tree、help:system)。

本文按此划分逐类详解,并在文末给出常用目标速查。

三、前置条件

按《Ubuntu 22.04 安装 Apache Maven 3.10.0 指南》完成安装,mvn 在 PATH 中可见。用于构建类命令(compile、validate、dependency:tree 等)的演示项目具备 pom.xml。

四、版本信息:mvn -v / mvn -version

查看 Maven、Java 与操作系统信息,两个命令输出一致:

mvn -v

实测回显:

Apache Maven 3.10.0 (c43a36b8d67be7e0805a411bc0898af1a51f5472)
Maven home: /opt/apache-maven-3.10.0
Java version: 17.0.20.1, vendor: Ubuntu, runtime: /usr/lib/jvm/java-17-openjdk-amd64
Default locale: en_US, platform encoding: ANSI_X3.4-1968, time zone: GMT
OS name: "linux", version: "6.8.0-138-generic", arch: "amd64", family: "unix"

mvn -version 输出相同。

五、生命周期阶段

5.1 阶段列表

在项目目录执行一个未知阶段(如 mvn help)时会提示可用的生命周期阶段。该列表即 Maven 默认生命周期的一级阶段集合,实测回显:

[ERROR] Unknown lifecycle phase "help". ... Available lifecycle phases are:
pre-clean, clean, post-clean,
validate, initialize, generate-sources, process-sources, generate-resources,
process-resources, compile, process-classes, generate-test-sources,
process-test-sources, generate-test-resources, process-test-resources,
test-compile, process-test-classes, test, prepare-package, package,
pre-integration-test, integration-test, post-integration-test, verify,
install, deploy,
pre-site, site, post-site, site-deploy.
-> [Help 1]

5.2 阶段说明

  • clean 阶段族:pre-clean、clean、post-clean,清理上一次构建产物。
  • default 生命周期:从 validate 到 deploy,覆盖编译、测试、打包、安装与部署;执行任一阶段会按顺序执行其之前的所有阶段。
  • site 阶段族:pre-site、site、post-site、site-deploy,生成并部署站点文档。

💡 说明:执行 mvn package 会自动依次执行 validate、compile、test、package 等前置阶段,无需逐个调用。

六、编译与验证

6.1 mvn validate

校验项目配置是否正确(坐标、依赖等),无编译动作。在项目目录执行:

cd /tmp/mvn-demo
mvn validate

实测可成功返回,无报错。

6.2 mvn compile

编译主源码到 target/classes。首次运行会从中央仓库自动下载插件与依赖,实测回显:

cd /tmp/mvn-demo
mvn compile
[INFO] Building demo 1.0.0
[INFO]   from pom.xml
[INFO] Loaded 24053 auto-discovered prefixes for remote repository central (prefixes-central.txt)
Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/3.5.0/maven-resources-plugin-3.5.0.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/3.5.0/maven-resources-plugin-3.5.0.pom (7.7 kB at 23 kB/s)
Downloaded from central: https://repo.maven.apache.org/maven2/com/github/javaparser/javaparser-core/3.28.2/javaparser-core-3.28.2.jar (1.5 MB at 131 kB/s)
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 1 source file with javac [debug target 17] to target/classes
[INFO] BUILD SUCCESS

6.3 在无 pom 目录执行报错

mvn 生命周期命令必须在含 pom.xml 的项目内运行,否则报 MissingProjectException。例如在 /tmp 直接执行 mvn compile 会失败。

七、依赖分析:mvn dependency:tree

查看项目依赖树,用于审计传递依赖与版本冲突:

cd /tmp/mvn-demo
mvn dependency:tree

实测回显(首次运行自动下载 maven-dependency-plugin,插件版本 3.11.0):

[INFO] --------------------------< com.example:demo >--------------------------
[INFO] com.example:demo:jar:1.0.0
[INFO] \- org.apache.commons:commons-lang3:jar:3.17.0:compile
[INFO] BUILD SUCCESS

八、帮助与属性评估

8.1 mvn help:system

打印 Maven 探测到的系统属性与环境变量,实测关键回显:

mvn help:system
os.name=Linux
maven.home=/opt/apache-maven-3.10.0
user.home=/root
java.version.date=2026-08-18
java.version=17.0.20.1
[INFO] BUILD SUCCESS

8.2 mvn help:evaluate

求值一个特定表达式,常用于读取生效配置。例如读取 settings.localRepository:

mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout

实测回显:

/root/.m2/repository

8.3 mvn help:effective-settings

输出合并全局与用户级配置后的生效 settings.xml,便于核对镜像、本地仓库等是否生效:

mvn help:effective-settings

九、常用目标速查

命令作用常用参数
mvn -v / mvn -version查看版本与环境无
mvn compile编译主代码-Dmaven.compiler.source/target
mvn test运行单元测试-Dtest=类名 -DskipTests
mvn package打包(含前序阶段)-DskipTests
mvn install安装到本地仓库-DskipTests
mvn clean清理 target常与 package/install 连用
mvn validate校验项目配置无
mvn dependency:tree依赖树-Dscope
mvn help:system系统属性无
mvn help:evaluate表达式求值-Dexpression=<属性>
mvn help:effective-settings生效配置无
mvn dependency:go-offline预下载依赖无

十、注意事项

  • 生命周期命令必须在含 pom.xml 的项目目录执行,否则报 MissingProjectException。
  • mvn clean install 先清理再重建并安装到本地仓库,是 CI 常用组合。
  • 日常构建可在命令后加 -q(安静模式)减少日志;-o 开启离线,仅用本地仓库已有依赖。
  • 构建日志中的 [INFO]、[WARNING]、[ERROR] 分别表示信息、警告与错误,关注 [ERROR] 与结尾的 BUILD SUCCESS/BUILD FAILURE。

十一、常见问题

Q1:mvn help 报 Unknown lifecycle phase "help"

help 不是生命周期阶段而是插件,应写作 mvn help:system(带冒号)。这条报错同时会列出可用生命周期阶段,可据此复习阶段列表。

Q2:mvn: command not found

PATH 未包含 $MAVEN_HOME/bin。确认 export PATH=$MAVEN_HOME/bin:$PATH 已生效。

Q3:执行 mvn compile 报 MissingProjectException

当前目录无 pom.xml。进入含 pom 的项目目录再执行,或用 -f /path/pom.xml 指定。

Q4:如何跳过测试加快构建

加参数 -DskipTests,如 mvn package -DskipTests。

十二、参考链接

  • Maven 常用命令指南:https://maven.apache.org/guides/getting-started/index.html
  • Maven 生命周期参考:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
  • Maven Help 插件:https://maven.apache.org/plugins/maven-help-plugin/
  • Maven Dependency 插件:https://maven.apache.org/plugins/maven-dependency-plugin/