1319 字
约 4 分钟
1
Maven 构建生命周期
2026-09-19
无标签
Maven 构建生命周期
什么是构建生命周期?
Maven 构建生命周期是一组有序的阶段(phases),定义了项目构建和分发的过程。每个生命周期由多个阶段组成,每个阶段代表构建过程中的一个特定步骤。
Maven 三大生命周期
- Default Lifecycle:处理项目的构建和部署
- Clean Lifecycle:清理项目
- Site Lifecycle:生成项目文档和站点
Default Lifecycle(默认生命周期)
这是最重要的生命周期,包含了项目构建的主要阶段:
validate
验证项目结构和必要信息
compile
编译源代码
test
运行单元测试
package
打包编译后的代码
verify
验证包的有效性
install
安装到本地仓库
deploy
部署到远程仓库
Default Lifecycle 完整阶段
| 阶段 | 描述 | 常用命令 |
|---|---|---|
| validate | 验证项目是否正确,所有必要信息是否可用 | mvn validate |
| initialize | 初始化构建状态 | - |
| generate-sources | 生成源代码 | - |
| process-sources | 处理源代码 | - |
| generate-resources | 生成资源文件 | - |
| process-resources | 处理资源文件到目标目录 | - |
| compile | 编译项目源代码 | mvn compile |
| process-classes | 处理编译生成的文件 | - |
| generate-test-sources | 生成测试源代码 | - |
| process-test-sources | 处理测试源代码 | - |
| generate-test-resources | 生成测试资源 | - |
| process-test-resources | 处理测试资源到目标目录 | - |
| test-compile | 编译测试源代码 | mvn test-compile |
| process-test-classes | 处理测试编译生成的文件 | - |
| test | 运行单元测试 | mvn test |
| prepare-package | 准备打包 | - |
| package | 打包编译后的代码 | mvn package |
| pre-integration-test | 集成测试前准备 | - |
| integration-test | 运行集成测试 | mvn integration-test |
| post-integration-test | 集成测试后处理 | - |
| verify | 验证包是否有效且符合质量标准 | mvn verify |
| install | 安装包到本地仓库 | mvn install |
| deploy | 部署到远程仓库 | mvn deploy |
Clean Lifecycle(清理生命周期)
用于清理项目构建产生的文件:
| 阶段 | 描述 | 命令 |
|---|---|---|
| pre-clean | 清理前的准备工作 | - |
| clean | 清理构建生成的文件 | mvn clean |
| post-clean | 清理后的收尾工作 | - |
$ mvn clean [INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ my-project --- [INFO] Deleting target directory
Site Lifecycle(站点生命周期)
用于生成项目文档和站点:
| 阶段 | 描述 | 命令 |
|---|---|---|
| pre-site | 生成站点前的准备工作 | - |
| site | 生成项目站点文档 | mvn site |
| post-site | 生成站点后的收尾工作 | - |
| site-deploy | 部署站点到服务器 | mvn site-deploy |
常用命令示例
基本构建命令
编译项目
$ mvn compile
运行测试
$ mvn test
打包项目
$ mvn package
安装到本地仓库
$ mvn install
清理并重新构建
$ mvn clean install
跳过测试
跳过测试编译和执行
$ mvn install -DskipTests
跳过测试编译
$ mvn install -Dmaven.test.skip=true
指定配置文件
使用特定的 Profile
$ mvn install -Pproduction
使用特定的 settings.xml
$ mvn install -s /path/to/settings.xml
生命周期执行流程
validatecompiletestpackageinstall> 重要:当执行某个阶段时,Maven 会自动执行该阶段之前的所有阶段。例如,执行mvn package会依次执行 validate、compile、test、package 阶段。
插件和目标(Goals)
每个生命周期阶段都会绑定一个或多个插件目标:
# 执行特定插件的特定目标
mvn plugin:goal
# 示例:编译源代码
mvn compiler:compile
# 示例:运行测试
mvn surefire:test
# 示例:创建 JAR 文件
mvn jar:jar
默认插件绑定
| 阶段 | 插件:目标 | 描述 |
|---|---|---|
| process-resources | resources:resources | 复制资源文件 |
| compile | compiler:compile | 编译源代码 |
| process-test-resources | resources:testResources | 复制测试资源文件 |
| test-compile | compiler:testCompile | 编译测试代码 |
| test | surefire:test | 运行单元测试 |
| package | jar:jar | 创建 JAR 包 |
| install | install:install | 安装到本地仓库 |
| deploy | deploy:deploy | 部署到远程仓库 |
自定义生命周期绑定
可以在 POM 中自定义插件绑定到特定阶段:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo message="开始构建项目..." />
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
最佳实践
- 理解阶段顺序:了解各阶段的执行顺序和依赖关系
- 合理使用命令:根据需要选择合适的生命周期阶段
- 插件版本管理:明确指定插件版本,确保构建一致性
- 测试策略:合理配置测试阶段,平衡速度和质量
- 清理习惯:定期使用 clean 命令清理构建产物
评论
0 条
还没有评论,先写一条吧。