Maven 生命周期
Maven 有三套相互独立的生命周期:
| 生命周期 |
说明 |
| default |
构建项目的核心流程(编译、测试、打包、安装、发布) |
| clean |
清理上次构建产物 |
| site |
生成项目站点文档 |
执行某个阶段时,该生命周期中之前的所有阶段都会自动执行。
default 生命周期关键阶段
validate → compile → test → package → verify → install → deploy
| 阶段 |
说明 |
validate |
验证项目结构和配置是否正确 |
compile |
编译主源码(src/main/java),生成 .class 文件到 target/classes |
test |
使用测试框架(JUnit)运行 src/test/java 下的单元测试 |
package |
将编译结果打包为 jar / war / zip 等,放入 target/ |
verify |
对集成测试结果进行验证 |
install |
将包安装到本地 Maven 仓库(~/.m2/repository),供本地其他项目依赖 |
deploy |
将包发布到远程仓库(Nexus / Artifactory 等) |
常用命令速查
清理
mvn clean
编译
mvn compile
mvn test-compile
mvn clean compile
测试
mvn test
mvn test -Dtest=FooTest
mvn test -Dtest=FooTest
打包
mvn package
mvn clean package
mvn clean package -DskipTests
mvn clean package -Dmaven.test.skip=true
-DskipTests:跳过测试运行,但仍编译测试代码
-Dmaven.test.skip=true:连测试代码也不编译
安装到本地仓库
mvn install
mvn clean install
mvn clean install -DskipTests
多模块项目中,子模块 A 依赖子模块 B 时,必须先对 B 执行 install,否则 A 找不到依赖。
发布到远程仓库
mvn deploy
mvn clean deploy -DskipTests
依赖管理
mvn dependency:tree
mvn dependency:tree -Dincludes=groupId:*
mvn dependency:analyze
mvn dependency:resolve
mvn dependency:purge-local-repository
查看项目信息
mvn help:effective-pom
mvn help:effective-settings
mvn help:describe -Dplugin=compiler
mvn versions:display-dependency-updates
多模块操作
mvn clean install -pl module-a
mvn clean install -pl module-a -am
mvn clean install -pl module-a -amd
mvn clean install --projects module-a,module-b
跳过检查
-DskipTests
-Dmaven.test.skip=true
-Dcheckstyle.skip=true
-Dspotbugs.skip=true
-Dmaven.javadoc.skip=true
三个常用命令对比
| 命令 |
执行阶段 |
产物 |
适用场景 |
mvn clean compile |
compile |
.class |
验证代码能否编译通过 |
mvn clean package |
package |
target/*.jar |
构建产物,不入本地仓库 |
mvn clean install |
install |
target/*.jar + 本地仓库 |
多模块互相依赖时使用 |
clean 生命周期
| 阶段 |
说明 |
pre-clean |
清理前执行 |
clean |
删除 target/ |
post-clean |
清理后执行 |
常用参数
| 参数 |
说明 |
-T 4 |
4 线程并行构建(多模块加速) |
-T 1C |
每个 CPU 核心 1 个线程 |
-o |
离线模式,不从远程仓库下载 |
-U |
强制更新 SNAPSHOT 依赖 |
-q |
静默模式,只输出错误 |
-X |
Debug 模式,输出详细日志 |
-e |
输出异常堆栈 |
-N |
不递归构建子模块 |
-P profile-id |
激活指定 profile |
-Dproperty=value |
传入系统属性 |