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