Maven 生命周期

文章目录

  • Maven 生命周期
    • - Clean 生命周期
    • - Build 生命周期
    • - Site 生命周期


Maven 生命周期

Maven 有以下三个标准的生命周期:

  • Clean 生命周期:
    • clean:删除目标目录中的编译输出文件。这通常是在构建之前执行的,以确保项目从一个干净的状态开始。
  • Build 生命周期:(也称:Default 生命周期)
    • validate:验证项目的正确性,例如检查项目的版本是否正确。
    • compile:编译项目的源代码。
    • test:运行项目的单元测试。
    • package:将编译后的代码打包成可分发的格式,例如 JAR 或 WAR。
    • verify:对项目进行额外的检查以确保质量。
    • install:将项目的构建结果安装到本地 Maven 仓库中,以供其他项目使用。
    • deploy:将项目的构建结果复制到远程仓库,以供其他开发人员或团队使用。
  • Site 生命周期:
    • site:生成项目文档和站点信息。
    • deploy-site:将生成的站点信息发布到远程服务器,以便共享项目文档。

每个生命周期又包含了多个生命周期阶段,生命周期阶由插件目标构成。

一个插件目标代表一个特定的任务(比构建阶段更为精细),这有助于项目的构建和管理。这些目标可能被绑定到多个阶段或者无绑定。不绑定到任何构建阶段的目标可以在构建生命周期之外通过直接调用执行。这些目标的执行顺序取决于调用目标和构建阶段的顺序。

- Clean 生命周期

Clean 生命周期用于删除目标目录中的编译输出文件。这通常是在构建之前执行的,以确保项目从一个干净的状态开始。

Clean 生命周期包含以下阶段:

阶段处理描述
pre-clean执行一些需要在 clean 之前完成的工作在清理之前执行一些特定的准备工作
clean移除生成的文件移除所有上一次构建生成的文件
post-clean执行一些需要在 clean 之后完成的工作在清理之后执行一些后续的工作

当运行某个阶段的时候,该生命周期(Clean 生命周期)内该阶段及该阶段之前的所有阶段都会被执行,例如:

  • 执行 mvn clean 将执行pre-clean、clean两个阶段
  • 执行 mvn post-clean 将执行pre-clean、clean、post-clean三个阶段

- Build 生命周期

Build(Default )生命周期是Maven最主要的生命周期。Build生命周期定义了一个项目构建跟发布的过程。

一个典型的 Maven Build 生命周期是由以下几类阶段的顺序组成的:
在这里插入图片描述

阶段分类处理描述
validate验证验证项目是否正确且所有必须信息是可用的
compile编译执行编译,源代码编译在此阶段完成
test测试使用适当的单元测试框架(例如JUnit)运行测试
package打包将编译后的代码打包成可分发的格式,例如 JAR 或 WAR
verify检查对集成测试的结果进行检查,以保证质量达标
install安装安装打包的项目到本地仓库,以供其他项目使用
deploy部署拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程

Build 生命周期的具体阶段如下:

阶段处理描述
validate校验校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
initialize初始化初始化构建状态,比如设置属性值。
generate-sources生成源代码生成包含在编译阶段中的任何源代码。
process-sources处理源代码处理源代码,比如过滤任意值。
generate-resources生成资源文件生成将会包含在项目包中的资源文件。
process-resources处理资源文件复制和处理资源到目标目录,为打包阶段准备。
compile编译编译项目的源代码。
process-classes处理类文件处理编译生成的文件,比如字节码优化。
generate-test-sources生成测试源代码生成包含在编译阶段中的任何测试源代码。
process-test-sources处理测试源代码处理测试源代码,比如过滤任意值。
generate-test-resources生成测试资源文件为测试创建资源文件。
process-test-resources处理测试资源文件复制和处理测试资源到目标目录。
test-compile编译测试源码编译测试源代码到测试目标目录。
process-test-classes处理测试类文件处理测试源码编译生成的文件。
test测试使用合适的单元测试框架运行测试。
prepare-package准备打包在打包之前,执行必要操作为打包做准备。
package打包将编译后的代码打包成可分发格式的文件。
pre-integration-test集成测试前在集成测试前进行必要的环境准备。
integration-test集成测试处理和部署项目到集成测试环境中。
post-integration-test集成测试后集成测试完成后进行必要的环境清理。
verify验证运行检查验证项目包有效且达到质量标准。
install安装安装项目包到本地仓库,供其他项目依赖。
deploy部署将项目包部署到远程仓库与其他开发者共享。

当运行某个阶段的时候,该生命周期(Build 生命周期)内该阶段及该阶段之前的所有阶段都会被执行

- Site 生命周期

Site 生命周期一般用来创建新的报告文档、部署站点等。

Site 生命周期的具体阶段如下:

阶段处理描述
pre-site执行前置工作执行一些需要在生成站点文档之前完成的工作。
site生成站点文档生成项目的站点文档。
post-site执行后置工作执行一些需要在生成站点文档之后完成的工作,并且为部署做准备。
site-deploy部署站点文档将生成的站点文档部署到特定的服务器上。

当运行某个阶段的时候,该生命周期(Site 生命周期)内该阶段及该阶段之前的所有阶段都会被执行

这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点.




参考文章:
Maven 构建生命周期

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

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

相关文章

Android Studio AI助手---Gemini

从金丝雀频道下载最新版 Android Studio,以利用所有这些新功能,并继续阅读以了解新增内容。 Gemini 现在可以编写、重构和记录 Android 代码 Gemini 不仅仅是提供指导。它可以编辑您的代码,帮助您快速从原型转向实现,实现常见的…

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍04-盲SQL注入(Blind SQL Injection)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Scala 的迭代器

迭代器定义:迭代器不是一种集合,它是一种用于访问集合的方法。 迭代器需要通过集合对应的迭代器调用迭代器的方法来访问。 支持函数式编程风格,便于链式操作。 创建一个迭代器,相关代码如下: object Test {def mai…

底层理论基础(单片机)

计算机基础 IO逻辑 计算机系统中的高低电平逻辑1和0,数据在计算机中的存储、传输、运算都是以二进制形式进行的。 数据的传输通过总线真正传递的是电信号,高低电平(0、1)。运算在电路中进行,集成电路中运算。 计算机的…

B站bilibili视频转文字字幕下载方法

本文将讲述介绍一种使用本地工具如何快速的下载B站的字幕为本地文本文件的方法。 通常获取B站字幕需要在浏览器中安装第三方插件,通过插件获取字幕。随着大模型,生成式AI,ChatGPT的应用,B站也提供了AI小助手对视频的内容进行总结…

ROS+PX4+Gazebo仿真环境配置全流程解析

上一期文章介绍了我们即将发布的仿真平台,并提到后续需要在Ubuntu系统上进行PX4软件在环仿真。本期文章将为大家详细介绍如何配置Ubuntu环境以及安装ROS和PX4仿真环境。具体配置包括:Ubuntu 20.04 ROS Noetic PX4 Python3。 需要注意的是&#xff0c…

基础入门-APP应用微信小程序原生态开发H5+Vue技术WEB封装打包反编译抓包点

知识点: 1、基础入门-APP应用-开发架构安全问题 2、基础入门-小程序应用-开发架构安全问题 通用: 1、反编译-得到源码-源码提取资产(泄漏的配置信息)-安全测试 2、抓包-资产-安全测试 一、演示案例-移动App-开发架构-原生&H…

Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索

作者:来自 Elastic Jeff Vestal 了解如何使用开放爬虫与 semantic text 字段结合来轻松抓取网站并使其可进行语义搜索。 Elastic Open Crawler 演练 我们在这里要做什么? Elastic Open Crawler 是 Elastic 托管爬虫的后继者。 Semantic text 是 Elasti…

Qt之自定义标题栏拓展(十)

Qt开发 系列文章 - user-defined-titlebars(十) 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 Qt自带…

vue3前端组件库的搭建与发布(一)

前言: 最近在做公司项目中,有这么一件事情,很是头疼,就是同一套代码,不同项目,要改相同bug,改好多遍,改的都想吐,于是就想做一个组件库,这样更新一下就全都可…

学技术学英文:代码中的锁:悲观锁和乐观锁

本文导读: 1. 举例说明加锁的场景: 多线程并发情况下有资源竞争的时候,如果不加锁,会出现数据错误,举例说明: 业务需求:账户余额>取款金额,才能取钱。 时间线 两人共有账户 …

Qt编译MySQL数据库驱动

目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 (1)先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 (2)在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…

CTFHUB-web(SSRF)

内网访问 点击进入环境,输入 http://127.0.0.1/flag.php 伪协议读取文件 /?urlfile:///var/www/html/flag.php 右击查看页面源代码 端口扫描 1.根据题目提示我们知道端口号在8000-9000之间,使用bp抓包并进行爆破 POST请求 点击环境,访问flag.php 查看页…

游戏引擎学习第43天

仓库 https://gitee.com/mrxiao_com/2d_game 介绍运动方程 今天我们将更进一步,探索运动方程,了解真实世界中的物理,并调整它们,以创建一种让玩家感觉愉悦的控制体验。这并不是在做一个完美的物理模拟,而是找到最有趣…

YashanDB共享集群产品能力观测:细节足见功底

本文基于前泽塔数科研发总监-王若楠2024年11月在“2024年国产数据库创新生态大会”-“根”技术专场的演讲整理形成,主要对崖山共享集群YAC的架构、功能、高可用性、性能四大方面进行全面测试,并分享了测试环境和测试结论。 年初,基于某些商业…

VMware ubuntu16.04怎么设置静态IP联网

1.将VMware桥接到当前电脑使用的网络上面; 2.点击网络符号,编辑连接; 3.双击有线连接1; 4.选择IPv4设置,将地址,子网掩码,网关,DNS服务器设置好,保存; 5.在终…

ElasticSearch的自动补全功能(拼音分词器、自定义分词器、DSL实现自动补全查询、RestAPI实现自动补全查询)

文章目录 1. 什么是自动补全2. 拼音分词器2.1 初识拼音分词器2.2 下载拼音分词器2.3 安装拼音分词器2.4 测试拼音分词器 3. 自定义分词器3.1 拼音分词器存在的问题3.2 分词器(analyzer)的组成3.3 如何自定义分词器3.4 拼音分词器的可选参数3.5 配置自定义…

Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ,java代码样例

一、环境 Windows11 WSL(Ubuntu 24.04.1) 二、思路 1 用Windows中的Ubuntu安装RabbitMQ,贴近Linux的线上环境; 2 RabbitMQ用erlang语言编写的,先安装erlang的运行环境; 2 用Linux的apt-get命令安装,解决软件依赖…

医学预测模型的网页应用必要模块设计(重制版)

医学预测模型的网页应用必要模块设计(重制版) 刘岳鹏 摘要: 网页应用(Web APP)承载医学临床预测模型并在临床实践中实现与用户的互动,必要的功能模块设计将有助于Web APP更好地在临床实践中发挥其功能。在此…

【他山之石】Leading-Trim: The Future of Digital Typesetting:数字排版的未来 —— Leading-Trim

文章目录 【他山之石】Leading-Trim: The Future of Digital Typesetting:数字排版的未来 —— Leading-TrimHow an emerging CSS standard can fix old problems and raise the bar for web apps1. The problem with text boxes today2. How we got here: a histor…