Maven的Clean、Default、Site三个生命周期完全独立,无继承与共享:Clean仅清理target目录(pre-clean→clean→post-clean);Default负责编译到部署(如mvn package自动执行前置阶段);Site专用于生成站点文档(如mvn site不触发编译)。

Maven 的 Clean、Default、Site 三个生命周期彼此完全独立,不存在继承关系,也不共享阶段或执行顺序。所谓“独立”,是指调用其中一个生命周期的任意阶段,不会自动触发另外两个生命周期里的任何阶段。
Clean 生命周期只管清理
它专用于清除构建产物,核心阶段是 clean(清空 target/ 目录)。执行 mvn clean 时,实际运行的是 pre-clean → clean → post-clean 这一串顺序阶段,但仅限于 clean 生命周期内部。它不会编译源码、不会运行测试,更不会生成站点文档。
-
mvn pre-clean:只执行 pre-clean 阶段 -
mvn clean:执行 pre-clean 和 clean -
mvn post-clean:三个阶段全执行
Default 生命周期负责完整构建
这是 Maven 最常用的一套生命周期,覆盖从编译到部署的全过程,典型命令如 mvn compile、mvn package、mvn install、mvn deploy。每个阶段都按固定顺序依赖前序阶段:比如 mvn package 会自动先执行 validate → compile → test → package 等所有前置阶段。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 它不依赖 clean,也不会自动清理旧文件;想确保干净构建,得显式加
mvn clean package - 它也不触发 site 相关动作,哪怕你执行了
mvn install
Site 生命周期专注文档生成与发布
它围绕项目站点展开,包括 pre-site、site、post-site、site-deploy 四个阶段。执行 mvn site 就只生成站点 HTML 文档,不会编译 Java 源码,也不会打包 JAR。
立即学习“Java免费学习笔记(深入)”;
-
mvn site-deploy会依次执行 pre-site → site → post-site → site-deploy - 它不读取 target/classes,也不检查 pom.xml 中的
<packaging>类型 - 即使项目没写过一行 Java 代码,只要配置了 site 插件,也能成功生成站点
三者可以组合调用,但仍是各自执行
你可以写 mvn clean install site,Maven 会依次运行 clean 生命周期、default 生命周期中的 install 阶段、site 生命周期中的 site 阶段——三次独立调度,中间无隐式衔接。它们之间没有父子、上下文或状态传递,就像分别运行三条互不干涉的命令。
- 没有“Clean 是 Default 的前置”这种逻辑;clean 不是 default 的子集,也不是它的父级
- 插件绑定只在单个生命周期内生效;比如 maven-compiler-plugin 绑定在 default 的 compile 阶段,对 clean 或 site 完全无效
- POM 中的
<build>和<reporting>分别对应 default 和 site 的配置区域,物理上就已隔离

















