maven三大生命周期clean、default、site相互独立,clean负责清理target目录,default按顺序执行validate至deploy等阶段(如mvn install自动运行其前置所有阶段),site生成项目文档站点。

要让Maven正确执行构建任务,必须理解它的三大生命周期如何触发、何时联动、哪些阶段会自动连带执行——不是所有命令都只干一件事,一个命令背后可能已悄悄跑完前面七八个步骤。
clean生命周期:专管“删”这件事
它只做清理,不碰编译、不生成包、不装仓库,独立存在,和default完全不耦合。
第一步:执行 mvn clean,Maven会依次运行 pre-clean → clean → post-clean 三个阶段。
clean 阶段是核心动作,它默认绑定 maven-clean-plugin:clean 目标,强制删除项目根目录下的 【target/ 目录】 及其全部内容。pre-clean 和 post-clean 极少被直接调用,除非你自定义了插件逻辑需要前置或后置钩子。
注意:clean 不会删除 src/、pom.xml 或 .idea 等源码相关文件,只动构建产物。误删 target 是安全的,但若 target 下有手动放进去的配置或临时文件,会被一并清空。
default生命周期:从校验到部署的完整流水线
这是日常开发最常打交道的一套生命周期,覆盖项目构建全过程。它不依赖 clean,也不触发 clean;你执行 mvn package,它不会先帮你把 target 删掉。
方法一:按需执行单个阶段
mvn compile → 编译 src/main/java 下的 Java 源文件,输出 class 到 target/classes;跳过 test、package 等后续阶段。
mvn test → 先执行 validate → compile,再运行 src/test/java 下的测试类;不打包、不安装。
方法二:执行靠后的阶段,自动连带前面所有阶段
mvn install 会完整走完:
validate → compile → test → package → verify → install
这一步最关键:install 阶段本身只负责把 target/ 下的 jar/war 复制进本地仓库(如 ~/.m2/repository),但为确保安装的是最新、可测、可打包的产物,Maven 必须先把它前面所有阶段都跑一遍。你不能跳过 test 直接 install,除非显式加 -Dmaven.test.skip=true 参数绕过。
mvn deploy 是 default 中最后一个常用阶段,它会在 install 完成后,将构件上传至远程仓库(如 Nexus 或 Artifactory)。前提是 pom.xml 中已正确定义
site生命周期:生成文档站点的独立通道
它和 clean、default 彼此隔离,不共享任何中间产物,也不影响构建结果。适合在发布前单独生成项目报告、Javadoc、测试覆盖率等静态页面。
执行 mvn site,Maven 按顺序运行 pre-site → site → post-site 三个阶段。
site 阶段是主干,它默认绑定 maven-site-plugin:site 目标,扫描项目结构、读取配置、调用各种报告插件(如 maven-javadoc-plugin、maven-surefire-report-plugin),最终在 target/site/ 下生成 HTML 页面集。
如果想把生成的站点发布到 Web 服务器,运行 mvn site-deploy,它会触发 post-site → site-deploy 阶段,并要求配置
这一步操作起来很简单,直接把 target/site/ 文件夹整个上传就行,但 Maven 会按插件规则自动处理路径、索引和增量更新逻辑。











