详解Maven的主要生命周期

这里写目录标题

  • Maven的主要生命周期
    • [Clean 生命周期:](#Clean 生命周期:)
    • [默认生命周期(Default Lifecycle):](#默认生命周期(Default Lifecycle):)
    • [Site 生命周期:](#Site 生命周期:)
  • 详解Maven的主要生命周期
    • [1. clean 生命周期](#1. clean 生命周期)
    • [2. compile 生命周期](#2. compile 生命周期)
    • [3. test 生命周期](#3. test 生命周期)
    • [4. package 生命周期](#4. package 生命周期)
    • [5. install 生命周期](#5. install 生命周期)
  • 这些生命周期的关系

Maven 是一个流行的构建工具,用于 Java 项目的自动化构建和管理。Maven 定义了一系列的生命周期,每个生命周期包含多个阶段。

Maven的主要生命周期

Maven 的生命周期主要分为以下三个部分,通过执行不同阶段(例如 mvn clean install),Maven 能够自动完成从清理、编译、测试、打包到安装和部署的整个构建过程。

Clean 生命周期:

  • 用于清理项目的构建产物(如 target/ 目录)

默认生命周期(Default Lifecycle):

常用阶段包括:

  • validate:验证项目结构和配置信息。
  • compile :编译主代码(src/main/java
  • test-compile :编译测试代码(src/test/java
  • test:运行单元测试
  • package:将编译后的代码打包成 jar、war 等格式
  • verify:执行集成测试,验证包的完整性
  • install:将构件安装到本地仓库,供其他项目使用
  • deploy:将构件发布到远程仓库(一般用于持续集成场景)

Site 生命周期:

  • 用于生成项目的文档和站点

详解Maven的主要生命周期

1. clean 生命周期

  • 目标 :用于清理项目,删除以前构建过程中的所有生成的文件(如 target/ 目录中的内容)。
  • 阶段clean: 删除之前构建的文件,确保从一个干净的状态开始构建。

这个生命周期通常在执行构建任务之前执行,确保不会使用旧的、过时的构建文件。

2. compile 生命周期

  • 目标:用于编译项目源代码。
  • 阶段compile: 编译 src/main/java 目录下的源代码,将 .java 文件编译成 .class 文件。

这个阶段是构建过程中非常基础的部分,确保源代码被正确编译。

3. test 生命周期

  • 目标:运行单元测试,确保项目的代码质量。
  • 阶段test: 使用单元测试框架(如 JUnit)执行 src/test/java 目录中的测试代码,并生成测试报告。通常会在测试之前编译好源代码。

这个阶段是验证代码是否按预期工作的一个重要步骤。

4. package 生命周期

  • 目标 :将编译后的代码打包成可执行的格式,如 .jar.war.ear 文件等。
  • 阶段package: 根据项目的 pom.xml 文件的配置将已编译的代码和资源文件打包为一个归档文件(通常是 .jar.war 格式)。

这个阶段的结果是构建产物,通常是可部署或分发的文件。

5. install 生命周期

  • 目标:将打包后的文件安装到本地 Maven 仓库中,供其他项目使用。
  • 阶段install: 将打包好的 .jar.war 文件安装到本地 Maven 仓库(默认一般是 ~/.m2/repository 目录)。这意味着其他项目可以通过 Maven 的依赖管理来引用这个构件。

这个阶段通常是在本地开发时使用,它允许你将构建的工件添加到本地仓库,以便其他项目使用。

这些生命周期的关系

  • clean 生命周期会清理掉旧的构建产物,通常在 compiletestpackageinstall 等构建操作之前执行。
  • compile 生命周期确保源代码已编译。
  • test 生命周期会在编译之后执行,确保测试通过。
  • package 会将已编译的代码打包成归档文件。
  • install 会将打包后的文件放到本地仓库,供其他项目依赖。

总结一下,这些生命周期阶段顺序执行的典型流程是:clean -> compile -> test -> package -> install

相关推荐
武子康1 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
YuTaoShao4 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw4 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
超浪的晨4 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
双力臂4045 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
Edingbrugh.南空5 小时前
Aerospike与Redis深度对比:从架构到性能的全方位解析
java·开发语言·spring
QQ_4376643146 小时前
C++11 右值引用 Lambda 表达式
java·开发语言·c++
永卿0016 小时前
设计模式-迭代器模式
java·设计模式·迭代器模式
誰能久伴不乏6 小时前
Linux如何执行系统调用及高效执行系统调用:深入浅出的解析
java·服务器·前端
慕y2747 小时前
Java学习第七十二部分——Zookeeper
java·学习·java-zookeeper