好的!下面帮你详细解释一下 mvn clean install 和 mvn package 这两个 Maven 命令的区别,方便你理解它们的作用和使用场景。


1. mvn clean install

  • clean:清理项目,删除之前编译生成的所有文件,通常是 target 目录,保证每次都是干净编译。
  • install:执行完整的构建生命周期,编译、测试、打包,并把构建好的包安装到本地 Maven 仓库(~/.m2/repository),以供其他项目引用。

总结:

  • 先清理项目旧文件
  • 编译、测试、打包
  • 安装到本地仓库

适用于:
开发时需要确保完整构建,并且生成的包要供本地其他项目依赖使用。


2. mvn package

  • 只执行构建生命周期直到 package 阶段,也就是编译 + 测试 + 打包(生成 jar/war/zip 等包)
  • 不执行 clean,不会自动清理旧文件
  • 不会把构建结果安装到本地仓库

适用于:
仅仅想快速打包项目,而不影响之前生成的文件,也不需要在本地仓库发布。


总结对比表

命令是否清理旧文件构建生命周期范围是否安装到本地仓库典型用途
mvn clean install从 clean 到 install开发阶段完整构建并发布本地
mvn package到 package 阶段仅打包产物,不清理、不发布

小提示

  • install 阶段包括 package 阶段,即 install 会执行 package 所有操作并进一步把包放到本地仓库。
  • 如果你想先干净构建再打包,可以执行:mvn clean package
  • 如果你只是想执行测试(不打包),可以用:mvn test

好的!下面是 Maven 的完整 生命周期(Lifecycle) 阶段介绍,以及常用命令详解,帮助你系统理解 Maven 构建流程。


一、Maven 主要生命周期阶段(以 default 生命周期为例)

Maven 通过一系列阶段(phase)来组织构建流程,这些阶段是有顺序依赖的,每个阶段包含执行的一组任务(plugin goals)。

阶段名作用说明典型任务示例
validate验证项目是否正确,所需信息是否齐备检查项目配置文件完整性
compile编译源代码编译 src/main/java 下的代码
test运行测试代码(不打包)编译并运行 src/test/java 中的测试代码
package打包编译好的代码生成可发布的包生成 jar、war、zip 等
verify运行任何检查以验证包的有效性代码质量检查、集成测试等
install将包安装到本地 Maven 仓库本地仓库路径 ~/.m2/repository
deploy将包部署到远程仓库供团队或外部使用发布到远程 Nexus、Artifactory 等仓库

二、常用 Maven 命令与对应生命周期

命令执行阶段说明
mvn validate只执行 validate验证项目基本正确性
mvn compile执行 validate + compile编译项目源码
mvn test到 test编译并执行单元测试
mvn package到 package编译、测试、打包
mvn verify到 verify完整验证,包括测试和代码检查
mvn install到 install构建并安装到本地仓库
mvn deploy到 deploy构建并发布到远程仓库
mvn clean清理生成文件(target/目录)清理旧的编译文件和打包产物
mvn clean package先清理再打包常用的干净打包命令
mvn clean install先清理再安装开发阶段完整构建并安装本地仓库

三、详细说明

1. clean 生命周期

clean 是独立生命周期,用于删除之前构建产生的文件(一般是 target 目录),保证干净编译。

命令:

mvn clean

相当于执行:

  • 删除编译生成的所有临时文件、jar、class 文件。

2. default 生命周期(核心构建流程)

由多个阶段组成,最常用的阶段是:

  • compile:编译源代码
  • test:执行测试代码
  • package:打包生成 jar/war
  • install:安装到本地仓库
  • deploy:发布到远程仓库

执行某个阶段,会自动执行它之前的所有阶段。例如:

mvn install

会依次执行 validate → compile → test → package → verify → install


3. site 生命周期

负责生成项目网站文档:

mvn site

四、插件执行绑定阶段举例

阶段典型插件 / 目标(Goal)
compilemaven-compiler-plugin:compile
testmaven-surefire-plugin:test
packagemaven-jar-plugin:jar
install自动把 jar 包复制到本地仓库目录
deploy上传包到远程仓库(Nexus、Artifactory 等)

五、总结

命令作用备注
mvn clean删除编译产物保证干净编译
mvn compile编译源码不执行测试和打包
mvn test编译并测试不生成打包文件
mvn package编译、测试、打包生成 jar/war 包
mvn install构建并安装到本地仓库本地项目间依赖使用
mvn deploy构建并上传到远程仓库持续集成、发布用