【maven-5】Maven 项目构建的生命周期:深入理解与应用

1. 生命周期是什么

​在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试及部署。虽然大家都在不停地做构建工作,但公司和公司间,项目和项目间,往往使用不同的方式做类似的工作。

​Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完美的,易扩展的生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。

​Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。

2. maven的三套生命周期

​maven拥有三套相互独立的生命周期,分别是clean,default和site。default 生命周期的作用是构建项目clean 生命周期的目的是清理项目site 生命周期的目的是构建项目站点

在这里插入图片描述

  1. default:负责项目的实际构建和部署。
  2. clean:负责清理项目,移除之前构建生成的文件。
  3. site:负责生成项目的站点文档。

2.1 default 生命周期

default 生命周期是 Maven 中最核心的生命周期,负责项目的实际构建和部署。default 生命周期包含多个阶段,以下是一些常用的阶段:

2.1.1 常用阶段
  • validate:验证项目是否正确,所有必要信息是否可用。
  • compile:编译项目的源代码。
  • test:使用合适的单元测试框架测试编译后的源代码。
  • package:将编译后的代码打包成可分发的格式(如 JAR、WAR)。
  • verify:对集成测试的结果进行检查,确保质量标准。
  • install:将包安装到本地仓库,供其他项目使用。
  • deploy:将最终的包复制到远程仓库,供其他开发者和项目使用。
2.1.2 示例

以下是一个简单的 Maven 命令,用于执行 package 阶段:

mvn package

执行上述命令时,Maven 会依次执行 validatecompiletestpackage 阶段。

2.2 clean 生命周期

clean 生命周期负责清理项目,移除之前构建生成的文件。clean 生命周期包含以下阶段:

2.2.1 常用阶段
  • pre-clean:执行清理前需要完成的工作。
  • clean:移除所有生成的文件。
  • post-clean:执行清理后需要完成的工作。
2.2.2 示例

以下是一个简单的 Maven 命令,用于执行 clean 阶段:

mvn clean

执行上述命令时,Maven 会依次执行 pre-cleanclean 阶段。

2.3 site 生命周期

site 生命周期负责生成项目的站点文档。site 生命周期包含以下阶段:

2.3.1 常用阶段
  • pre-site:执行生成站点文档前需要完成的工作。
  • site:生成项目的站点文档。
  • post-site:执行生成站点文档后需要完成的工作。
  • site-deploy:将生成的站点文档部署到指定的 Web 服务器。
2.3.2 示例

以下是一个简单的 Maven 命令,用于执行 site 阶段:

mvn site

执行上述命令时,Maven 会依次执行 pre-sitesite 阶段。

3. 自定义生命周期

Maven 允许用户通过插件(Plugins)自定义生命周期。插件是 Maven 的核心扩展机制,通过插件,用户可以定义新的目标(Goals),并将这些目标绑定到特定的生命周期阶段。

3.1 插件配置

以下是一个简单的插件配置示例,将 maven-compiler-plugin 插件的目标绑定到 compile 阶段:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><executions><execution><goals><goal>compile</goal></goals><phase>compile</phase></execution></executions></plugin></plugins>
</build>

3.2 自定义阶段

Maven 允许用户通过 lifecycle 元素自定义生命周期。以下是一个简单的自定义生命周期示例:

<lifecycle><phases><phase>custom-phase</phase></phases><default-phases><custom-phase>org.apache.maven.plugins:maven-custom-plugin:custom-goal</custom-phase></default-phases>
</lifecycle>

4. 总结

Maven 的生命周期是项目构建的核心概念,通过理解生命周期的各个阶段,我们可以更高效地管理和构建项目。Maven 提供了三个内置的生命周期:defaultcleansite,每个生命周期由多个有序的阶段组成。通过插件,用户可以自定义生命周期,扩展 Maven 的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/481452.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLamafactory API部署与使用异步方式 API 调用优化大模型推理效率

文章目录 背景介绍第三方大模型API 介绍LLamafactory 部署API大模型 API 调用工具类项目开源 背景介绍 第三方大模型API 目前&#xff0c;市面上有许多第三方大模型 API 服务提供商&#xff0c;通过 API 接口向用户提供多样化的服务。这些平台不仅能提供更多类别和类型的模型…

【Python网络爬虫笔记】6- 网络爬虫中的Requests库

一、概述 Requests 是一个用 Python 语言编写的、简洁且功能强大的 HTTP 库。它允许开发者方便地发送各种 HTTP 请求&#xff0c;如 GET、POST、PUT、DELETE 等&#xff0c;并且可以轻松地处理请求的响应。这个库在 Python 生态系统中被广泛使用&#xff0c;无论是简单的网页数…

【AI技术赋能有限元分析应用实践】Abaqus有限元分析到深度学习方法应用全过程——汽车刹车片热力耦合分析

目录 一、项目实现介绍**项目背景****项目目标****项目流程概述****技术融合****项目价值** 二、实现流程**Step 1: 分析问题构建方法&#xff0c;寻找主要分析目标&#xff0c;确定初步目标****Step 2: 使用 Abaqus 完成有限元仿真&#xff0c;后处理并保存数据为 odb 格式***…

【人工智能-科普】深度森林:传统机器学习与深度学习的创新结合

文章目录 深度森林:传统机器学习与深度学习的创新结合一、什么是深度森林?二、深度森林的工作原理1. **特征提取和转换**2. **多层级训练**3. **最终分类**三、深度森林的关键组成部分1. **森林层(Forest Layer)**2. **级联结构(Cascade Structure)**3. **特征增强(Feat…

Netty的内存池机制怎样设计的?

大家好&#xff0c;我是锋哥。今天分享关于【Netty的内存池机制怎样设计的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Netty的内存池机制怎样设计的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty 的内存池机制设计是为了提高性能&…

Postman设置接口关联,实现参数化

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 postman设置接口关联 在实际的接口测试中&#xff0c;后一个接口经常需要用到前一个接口返回的结果&#xff0c; 从而让后一个接口能正常执行&#xff0c;这…

七牛云成功保存但无法显示和访问{“error“:“download token not specified“}

在使用七牛云存储图片时&#xff0c;前端通过链接访问图片时遇到错误&#xff1a; {"error":"download token not specified"} 具体表现为&#xff1a; 后端通过 access_key 和 secret_key 生成了上传和下载的 Token。前端将域名与 res.key 拼接后生成图…

《实战OpenCV系列》专栏介绍

简介 本专栏由浅入深&#xff0c;详细介绍了使用OpenCV进行图像/视频处理的各方面知识&#xff0c;包括&#xff1a;图像显示、图像的数学运算、图像的裁剪与拼接、图像的像素操作、几何变换、直方图、图像滤波、色彩空间转换、边缘检测、形态学操作、模板匹配、视频处理、图像…

常用函数的使用错题汇总

#include <iostream> #include <fstream> #include <string>int main() {std::ifstream fin("example.txt"); // 创建 ifstream 对象并打开文件// 检查文件是否成功打开if (!fin) {std::cerr << "Error opening file!" << s…

曲面单值化定理

曲面单值化定理&#xff08;Uniformization Theorem&#xff09;是复分析、几何和拓扑学中的一个重要结果。它为紧致黎曼曲面提供了标准化的几何结构&#xff0c;是研究复几何和代数几何的基础。以下是对曲面单值化定理的详细介绍以及其应用场景。 曲面单值化定理的陈述 基本版…

【初阶数据结构和算法】二叉树顺序结构---堆的定义与实现(附源码)

文章目录 一、堆的定义与结构二、堆的实现1.堆的初始化和销毁堆的初始化堆的销毁 2.向上调整算法和入堆向上调整算法入堆 3.向下调整算法和出堆顶数据向下调整算法出堆 4.堆的有效数据个数和判空堆的有效数据个数堆的判空 5.取堆顶数据 三、堆的源码 一、堆的定义与结构 本篇内…

进程的知识

1. 冯诺依曼体系结构 输入设备&#xff1a;键盘&#xff0c;话筒&#xff0c;网卡&#xff0c;磁盘&#xff08;外存&#xff09; 外设&#xff1a; 输出设备&#xff1a;显示器&#xff0c;磁盘&#xff0c;网卡&#xff0c;打印机 CPU运算器控制器 存储器&#xff1a…

创建HTTPS网站

每天&#xff0c;我们都会听到网络上发生身份盗窃和数据侵权的案例&#xff0c;这导致用户对自己访问的网站更加怀疑。他们开始更加了解自己将个人信息放在哪里以及信任哪些类型的网站。了解如何使网站使用HTTPS变得比以往任何时候都更加重要。 解读缩略词&#xff1a;HTTP与HT…

pytest+allure生成报告显示loading和404

pytestallure执行测试脚本后&#xff0c;通常会在电脑的磁盘上建立一个临时文件夹&#xff0c;里面存放allure测试报告&#xff0c;但是这个测试报告index.html文件单独去打开&#xff0c;却显示loading和404, 这个时候就要用一些办法来解决这个报告显示的问题了。 用命令产生…

如何使用ST7789展现图片?[ESP--4]

本节我们继续ESP和ST 7789的话题&#xff0c;这节课我们来学学如何展示图片,话不多说&#xff0c;先上效果 好&#xff0c;教程开始~前情提要&#xff0c;要看懂这篇&#xff0c;建议搭配楼主的前两期文章 使用ESP32驱动LCD-ST7789屏幕[ESP–2] 加速你的LCD-ST7789屏幕&#xf…

南京仁品耳鼻喉专科医院:12月启动公益义诊月

专业医疗资源送至“家门口”&#xff01;南京仁品耳鼻喉专科医院启动公益义诊月 随着2024年即将步入尾声&#xff0c;南京仁品耳鼻喉医院为回馈社会&#xff0c;提升公众健康福祉&#xff0c;将于12月隆重推出“三甲专家公益义诊月”活动。此次活动旨在通过汇聚众多耳鼻喉领域…

数据结构—排序算法(python实现)

数据结构 脑图排序算法1.冒泡排序1.1步骤1.2python代码实现冒泡&#xff1a;1.3分析冒泡 2.插入排序2.1步骤2.2python代码实现插入排序&#xff1a;2.3分析插入 3.选择排序3.1步骤3.2python代码实现&#xff1a;3.3分析选择 4.快速排序4.1步骤4.2python代码实现&#xff1a;4.3…

Pinia管理用户数据

Pinia 是 Vue3 的新一代状态管理库&#xff0c;提供了更简单的 API 和更好的 TypeScript 支持。它作为 Vuex 的替代方案&#xff0c;成为了管理 Vue 应用状态的首选。Pinia 是 Vue3 的新一代状态管理库。与 Vuex 相比&#xff0c;Pinia 提供了更简单的 API、更好的性能&#xf…

远程协助软件Todesk免费版有什么限制

大名鼎鼎的远程todesk也开始出限制了&#xff0c;国内远程协助一直是向日葵一家独大&#xff0c;todesk起来以后慢慢占领了部分市场&#xff0c;随用户越来越多&#xff0c;其服务器也开始不堪重负了&#xff0c;于2024年的6月发了公告&#xff0c;出告了限制发表的措施具体如下…

电路基础——相量法

相量法 为什么要使用相量表示&#xff1f; 电路方程是微分方程&#xff1a; 电路的运算&#xff08;如KCL、KVL方程运算&#xff09;会涉及到两个正弦量的相加&#xff1a; 如下图所示同频率的正弦量相加仍得到同频率的正弦量&#xff0c;因此只需确定初相位和有效值。 基于上…