1319 字
约 4 分钟
1
Maven 构建生命周期
无标签

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 命令清理构建产物
Maven 构建生命周期
http://www.clxhxhhr.top/posts/2899/
作者
clxstart
发布于
2026-09-19
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。