maven概述和生命周期简述

一、Maven概述

Maven,是一个专为Java平台设计的项目管理和构建工具。其核心思想在于“约定优于配置,通过提供一套默认的构建和依赖管理规则,降低了项目配置的复杂性,使开发者能够专注于业务逻辑的实现。Maven不仅支持项目的构建、依赖管理,还涵盖了项目文档生成、版本控制集成、部署发布等多个方面,为Java项目的全生命周期管理提供了全面的解决方案。

Maven 生命周期通俗解释

想象你在开一家餐厅,Maven 的三种生命周期就像是三种不同规模的开业准备流程


🧹 Clean 生命周期——大扫除

通俗理解:彻底清理厨房,准备全新开始

阶段餐厅比喻实际作用
pre-clean戴上手套、拿出清洁工具准备清理环境
clean把灶台、案板全部擦干净,扔掉昨天的剩菜删除 target/ 目录,清除所有编译好的 class 文件和打包好的 jar/war
post-clean检查是否打扫干净,把工具放回原位清理完成后的收尾工作

为什么需要 clean?

  • 避免新旧代码混在一起(比如你改了代码,但旧的 class 文件还在,可能跑的还是旧代码)
  • 解决一些莫名其妙的编译问题

日常用法

mvn clean

执行后,target/ 目录消失,项目回到刚下载时的状态。


🏗️ Default 生命周期——从备菜到上桌的全流程

通俗理解:从买菜、洗菜、切菜、炒菜到装盘上桌的完整烹饪流程

这是 Maven 最常用的生命周期,包含 14 个阶段,但你不需要记住所有,只需要知道几个关键节点:

核心阶段(你平时用的那些)

阶段餐厅比喻实际作用命令
validate确认菜单没问题,厨房有水有电检查项目配置是否正确自动执行
compile洗菜切菜.java 编译成 .classmvn compile
test尝一口菜的味道运行单元测试,确保代码没问题mvn test
package把菜装盘打包成 jar/warmvn package
verify服务员检查菜品质量运行集成测试,检查包是否合格自动执行
install把菜放到自家冰箱安装到本地仓库,供本机其他项目用mvn install
deploy把菜送到其他餐厅部署到远程仓库,供团队其他人用mvn deploy

📦 mvn clean package 详解

这是一个组合命令,相当于:

  1. 先大扫除(clean):把旧菜全部倒掉
  2. 重新做饭(package):
  • 备菜(validate)
  • 洗菜切菜(compile)
  • 尝味道(test)
  • 装盘(package)

输出结果:在 target/ 目录下生成一个完整的 JAR 或 WAR 包,可以直接拿去部署。


📄 Site 生命周期——写菜单和开店宣传

通俗理解:打印菜单、制作店铺宣传单、发广告

阶段餐厅比喻实际作用
pre-site准备打印机和纸张准备生成文档的环境
site打印菜单、制作宣传单生成项目文档网站(API文档、报告等)
post-site检查菜单有没有错别字文档生成后的收尾
site-deploy把菜单贴到店门口、发传单把生成的文档发布到服务器

什么时候用?

  • 你要生成项目的 API 文档给团队看
  • 你要制作项目的展示网站
  • 开源项目需要发布文档到 GitHub Pages

命令

mvn site           # 生成文档(在 target/site/ 目录下)
mvn site-deploy    # 生成并发布文档

🎯 一句话总结三种生命周期

生命周期通俗比喻核心作用常用命令
Clean大扫除清空旧的构建产物mvn clean
Default做饭全过程编译、测试、打包、安装、部署mvn compile / mvn package / mvn install
Site写菜单、发传单生成项目文档网站mvn site

🍳 最常用的组合(你每天都会用到)

# 只编译
mvn compile

# 只测试
mvn test

# 先清空,再打包(最常用)
mvn clean package

# 先清空,再安装到本地仓库
mvn clean install

# 先清空,再部署到远程仓库
mvn clean deploy

📊 最终对比表

命令做了什么结果在哪
mvn compile只编译代码target/classes/
mvn test编译+测试测试报告在 target/surefire-reports/
mvn package编译+测试+打包target/ 下有 jar/war 包
mvn clean package先清空旧文件,再重新打包干净的 target/ 下有新包
mvn install打包并放入本地仓库~/.m2/repository/ 里多了一份
mvn deploy打包并上传远程仓库公司私服上多了一份

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注