当前位置: 首页 > news >正文

Maven 生命周期和插件

Maven 生命周期和插件

  • 1 生命周期
    • 1.1 生命周期内的阶段
      • 1.1.1 clean 生命周期 (清理)
      • 1.1.2 default 生命周期 (构建和部署)
      • 1.1.3 site 生命周期 (站点生成)
  • 2 插件

1 生命周期

Maven有三个标准生命周期:default、clean和site。每个生命周期包含多个阶段,阶段按顺序执行。当你执行 某个生命周期中的某个阶段(例如 mvn install)时,Maven 会按顺序执行该生命周期内该阶段之前的所有阶段
Maven 预定义了三个相互独立的生命周期:

  • clean: 清理项目。
  • default (或 build): 构建和部署项目(这是最核心、最常用的)。
  • site: 生成项目站点文档。

1.1 生命周期内的阶段

每个生命周期都由一系列阶段组成:

1.1.1 clean 生命周期 (清理)

  • 目的: 移除之前构建生成的文件(主要是 target 目录)。
  • 主要阶段:
    • pre-clean: 执行清理前需要完成的工作。
    • clean: 核心阶段。移除所有上一次构建生成的文件(通常是删除 target 目录)。
    • post-clean: 执行清理后需要完成的工作。
  • 常用命令: mvn clean

1.1.2 default 生命周期 (构建和部署)

  • 目的: 处理项目的构建、测试、打包、验证、安装、部署等整个过程。这是最复杂也是最重要的生命周期。
  • 主要阶段 (按顺序执行):
    • validate: 验证项目是否正确且所有必要信息可用。
    • initialize: 初始化构建状态,例如设置属性或创建目录。
    • generate-sources: 生成任何需要包含在编译中的源代码。
    • process-sources: 处理源代码,例如过滤值。
    • generate-resources: 生成包含在包中的资源文件。
    • process-resources: 复制和处理资源文件到目标目录,准备打包。
    • compile: 核心阶段。编译项目的主源代码(通常是 src/main/java 下的代码到target/classes)。
    • process-classes: 对编译生成的文件进行后处理,例如字节码增强。
    • generate-test-sources: 生成任何测试源代码。
    • process-test-sources: 处理测试源代码。
    • generate-test-resources: 生成测试资源。
    • process-test-resources: 复制和处理测试资源到测试目标目录。
    • test-compile: 核心阶段。编译项目的测试源代码(src/test/java 到 target/test-classes)。
    • process-test-classes: 对测试编译文件进行后处理。
    • test: 核心阶段。使用合适的单元测试框架(如 JUnit)运行测试。这些测试不应要求代码被打包或部署。
    • prepare-package: 在打包前执行必要的准备工作。
    • package: 核心阶段。将编译后的代码打包成可分发的格式,如 JAR, WAR, EAR, POM 等。具体格式由 元素定义。
    • pre-integration-test: 在集成测试执行前执行所需的操作(如启动环境)。
    • integration-test: 处理包并在必要时部署到集成测试可以运行的环境中。
    • post-integration-test: 执行集成测试后所需的操作(如停止环境)。
    • verify: 运行任何检查以验证包是否有效且符合质量标准。
    • install: 核心阶段。将包安装到本地 Maven 仓库(通常是 ~/.m2/repository),供本地其他项目依赖。
    • deploy: 核心阶段。在集成或发布环境中,将最终的包复制到远程 Maven 仓库,以便与其他开发者和项目共享。
  • 重要特性:
    • 当你执行 default 生命周期中的某个阶段(例如 mvn install)时,Maven 会按顺序执行该生命周期内该阶段之前的所有阶段(例如,install 会执行从 validate 到 verify 的所有阶段,然后再执行 install 本身)。
    • package 阶段创建的项目构件(JAR/WAR等)位于项目的 target 目录下。
    • install 阶段将构件复制到本地仓库。
    • deploy 阶段将构件复制到配置的远程仓库。

1.1.3 site 生命周期 (站点生成)

  • 目的: 为项目生成站点文档(报告、Javadoc 等)。
  • 主要阶段:
    • pre-site: 执行生成站点前需要完成的工作。
    • site: 核心阶段。生成项目的站点文档(通常输出到 target/site)。
    • post-site: 执行生成站点后需要完成的工作,并为站点部署做准备。
    • site-deploy: 将生成的站点文档部署到配置的 Web 服务器。
  • 常用命令: mvn site (生成站点), mvn site-deploy (部署站点)。

2 插件

  • 生命周期阶段本身不执行任何具体的任务。它们只是定义了一个点(Point)。
  • 插件目标(Plugin Goals) 被绑定到生命周期的特定阶段上。当 Maven 执行到某个阶段时,所有绑定到该阶段(以及该生命周期内该阶段之前的所有阶段)的插件目标都会被执行。正是这些插件目标完成了实际的构建工作(如编译、测试、打包等)。
  • 默认maven在各个生命周期上绑定有预设的功能
<!--插件Goal:jar-->
<!--插件绑定的生命周期阶段  generate-test-resources-->
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><goals><goal>jar</goal></goals><phase>generate-test-resources</phase></execution></executions></plugin></plugins>
</build>

执行一个命令(如 mvn install)会触发一个生命周期(这里是 default),并执行从该生命周期开始直到你指定的阶段(这里是 install)之间的所有阶段。每个阶段执行时,会运行所有绑定到该阶段(及之前阶段)的插件目标。这就是 Maven 构建过程自动化的核心机制。

http://www.lryc.cn/news/625154.html

相关文章:

  • 大数据分析-读取文本文件内容进行词云图展示
  • 大厂求职 | 2026海尔校园招聘,启动!
  • Vuex 状态持久化企业级解决方案
  • ​Kali Linux 环境中的系统配置文件与用户配置文件大全
  • MongoDB 从入门到精通:安装配置与基础操作指令详解
  • 计算机组成原理(9) - 整数的乘除法运算
  • 抽象类和接口的区别
  • VLN视觉语言导航(3)——神经网络的构建和优化 2.3
  • qsort函数使用及其模拟实现
  • Android Cutout(屏幕挖孔)详解
  • SpringBoot--Spring MVC 拦截器注入与 new 的区别
  • gdb的load命令和传给opeocd的monitor flash write_image erase命令的区别
  • 优秀开发者的重要认知能力无法被AI替代
  • 在win10/11下Node.js安装配置教程
  • Ai Agent 项目
  • 项目延期的主要原因分析,以及应对策略
  • 摔倒检测数据集:1w+图像,yolo标注
  • 深度学习-计算机视觉-微调 Fine-tune
  • 【完整源码+数据集+部署教程】织物缺陷检测系统源码和数据集:改进yolo11-RevCol
  • STL库——string(类函数学习)
  • steal tsoding‘s pastebeam code as go server
  • CMake指令:查找文件(find_file)、查找目录(find_path)、查找库文件(find_library)
  • npm设置了镜像 pnpm还需要设置镜像吗
  • Esp32基础(③旋转编码器)
  • wait / notify、单例模式
  • 在openEuler系统中如何查看文件夹下每个文件的大小
  • AVB(Android Verified Boot)中vbmeta结构浅析
  • C/C++ 中 str、str、*str 在指针语境下的具体含义(以 char* str 为例):
  • Android输入框文字不垂直居中
  • Linux下的软件编程——IPC机制