好的!下面帮你详细解释一下 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/warinstall
:安装到本地仓库deploy
:发布到远程仓库
执行某个阶段,会自动执行它之前的所有阶段。例如:
mvn install
会依次执行 validate → compile → test → package → verify → install
3. site 生命周期
负责生成项目网站文档:
mvn site
四、插件执行绑定阶段举例
阶段 | 典型插件 / 目标(Goal) |
---|---|
compile | maven-compiler-plugin:compile |
test | maven-surefire-plugin:test |
package | maven-jar-plugin:jar |
install | 自动把 jar 包复制到本地仓库目录 |
deploy | 上传包到远程仓库(Nexus、Artifactory 等) |
五、总结
命令 | 作用 | 备注 |
---|---|---|
mvn clean | 删除编译产物 | 保证干净编译 |
mvn compile | 编译源码 | 不执行测试和打包 |
mvn test | 编译并测试 | 不生成打包文件 |
mvn package | 编译、测试、打包 | 生成 jar/war 包 |
mvn install | 构建并安装到本地仓库 | 本地项目间依赖使用 |
mvn deploy | 构建并上传到远程仓库 | 持续集成、发布用 |
发表回复