首页/新闻资讯/正文详情

【Maven系列2】生命周期与插件

发布时间:2026/9/25 18:27:53 来源:云帆数科 栏目:资讯中心
【Maven系列2】生命周期与插件
讲解Maven的生命周期和插件以及常用的命令。Maven生命周期三套生命周期Maven 的生命周期并不是一个整体Maven 拥有三套相互独立的生命周期clean项目清理的处理default(或 build)项目部署的处理site项目站点文档创建的处理三套生命周期本身是相互独立的用户可以仅调用 clean 生命周期的某个阶段或者仅仅调用 default 生命周期的某个阶段而不会对其他生命周期产生任何影响。例如当用户调用 clean 生命周期的 clean 阶段的时候不会触发 default 生命周期的任何阶段反之亦然。注所以一般的打包命令都是 clean package xxxxx先 clean 再 package就是因为 clean 和 package 是在两个不同的生命周期里面。clean生命周期当我们执行 mvn post-clean 命令时Maven 调用 clean 生命周期它包含以下阶段pre-clean执行一些需要在clean之前完成的工作clean移除所有上一次构建生成的文件post-clean执行一些需要在clean之后立刻完成的工作当调用 pre-clean 时只有 pre-clean 阶段得以执行当调用 clean 的时候pre-clean和clean阶段会得以顺序执行以此类推。这是因为每个生命周期包含一些阶段(phase)这些阶段是有顺序的并且后面的阶段依赖于前面的阶段。default生命周期重点步骤如下表这个需要掌握default的23个阶段仅了解即可在开发环境中使用下面的命令去构建、安装工程到本地仓库mvn install这个命令在执行 install 阶段前按顺序执行了 default 生命周期的阶段 validatecompilepackage等等我们只需要调用最后一个阶段如这里是 install。site生命周期pre-site 执行一些在生成项目站点之前需要完成的工作。site 生成项目站点文档。post-site 执行一些在生成项目站点之后需要完成的工作。site-deploy 将生成的项目站点发布到服务器上。这个没用过后面如果需要用的话我再试试。Maven插件插件介绍Maven 三套生命周期定义各个阶段不做任何实际工作实际工作都是由插件来完成的每个生命周期阶段都是由插件的目标来完成。在 pom 文件中声明如下打包源码文件插件build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-source-plugin/artifactId version2.1.1/version executions execution idattach-sources/id phaseverify/phase goals goaljar-no-fork/goal /goals /execution /executions /plugin /plugins /buildMaven 实际上是一个依赖插件执行的框架每个任务实际上是由插件完成。Maven 插件通常被用来创建 jar 文件创建 war 文件编译代码文件代码单元测试创建工程文档创建工程报告插件目标一个插件有可能有多个功能、每个功能就是一个目标。比如 maven-dependency-plugin 有十多个目标每个目标对应了一个功能。插件的目标为 dependency:analyze、dependency:tree和dependency:list。通用写法冒号前面是插件前缀冒号后面是插件的目标。比如 compiler:compile。插件绑定内置绑定为实现快速构建Maven 有一套内置的插件绑定。三套生命周期的插件绑定具体如下其实是各个生命周期阶段与插件的目标的绑定。其中 default 生命周期的构建方式会其打包类型有关、打包类型在POM中 packaging 指定。一般有 jar、war 两种类型。下面是默认绑定插件与生命周期关系图自定义绑定自定义绑定允许我们自己掌控插件目标与生命周期的结合.以生成项目主代码的源码 jar 为例。使用到的插件和它的目标为maven-source-plugin:jar-no-fork。将其绑定到 default 生命周期阶段 verify 上可以任意指定三套生命周期的任意阶段。build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-source-plugin/artifactId version2.1.1/version executions execution idattach-sources/id phaseverify/phase !-- 指定作用在生命周期的哪个阶段 -- goals goaljar-no-fork/goal !-- 指定执行绑定插件的哪些目标 -- /goals /execution /executions /plugin /plugins /build举个栗子这个是项目中的示例plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-source-plugin/artifactId version3.0.1/version executions execution idattach-sources/id phasepackage/phase goals goaljar-no-fork/goal /goals /execution /executions /plugin plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-surefire-plugin/artifactId configuration !-- 不执行单元测试 -- skiptrue/skip /configuration /plugin plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.8.0/version configuration encoding${project.build.sourceEncoding}/encoding source${java.version}/source target${java.version}/target testSource${java.version}/testSource testTarget${java.version}/testTarget /configuration /plugin /pluginsmaven-source-plugin是对Maven工程的源码进行打jar包的插件。但是我试过我将它去掉一样可以打包成功应该是用的Maven的默认插件。maven-surefire-plugin是maven里执行测试用例的插件示例我们是跳过了单元测试maven-compiler-plugin用于指定JDK的编译版本插件在pom.xml的属性配置文件中我们指定的是1.8。

相关推荐

Apereo CAS 作为 OAuth 2.0 服务端:协议端点、配置属性与授权流实战指南
Apereo CAS 作为 OAuth 2.0 服务端:协议端点、配置属性与授权流实战指南

后端认证鉴权单点登录 【免费下载链接】cas Apereo CAS - Identity & Single Sign On for all earthlings and beyond. 项目地址: https://gitcode.com/gh_mirrors/ca/cas 点击查看 免费下载 本文以 Apereo CAS 官方文档为骨架,系统讲解如何将 CAS … · 2026/9/25 18:27:47

色弱色盲色彩校正:Daltonization 算法在前端看板中的实战
色弱色盲色彩校正:Daltonization 算法在前端看板中的实战

色弱色盲色彩校正:Daltonization 算法在前端看板中的实战在全人类人口结构中,有超过 $8%$ 的男性与 $0.5%$ 的女性(全球近 3 亿人) 患有不同程度的先天性色觉障碍(Color Vision Deficiency, CVD / 俗称色弱与色盲&… · 2026/9/25 18:27:29

大模型辅助的 ARIA 角色与状态图谱自动标注流水线
大模型辅助的 ARIA 角色与状态图谱自动标注流水线

大模型辅助的 ARIA 角色与状态图谱自动标注流水线在复杂的企业级前端富交互组件(如多层嵌套树形控件 TreeView、复合分段选项卡 Tabs、无级滑动滑块 Slider、以及网格数据表格 DataGrid)开发中,无障碍 ARIA 角色(Roles&#xff09… · 2026/9/25 18:27:23

数据结构做题笔记
数据结构做题笔记

1.链表逆序代码 ** #include <stdio.h> #include <stdlib.h> typedef struct Node {int data;struct Node *next; } Node;struct Node *reverseList(Node *head) {Node *pre NULL;Node *cur head;Node *next NULL;while (cur ! NULL){next cur->next;cur-&g… · 2026/9/25 18:56:39

仲夏CMS | 建站这件事,本来不该这么累
仲夏CMS | 建站这件事,本来不该这么累

想做自己的网站&#xff0c;第一步通常不是写作&#xff0c;是"配环境"。装运行时、配数据库、拉依赖、改配置文件、解决端口占用……等你把这些忙完&#xff0c;最初想写的那点东西&#xff0c;早没了兴致。我们把这套流程里最烦的部分&#xff0c;直接砍掉了。仲夏… · 2026/9/25 18:56:39

AI深入芯片与行业数据链:从运行AI到芯片即AI的范式重构
AI深入芯片与行业数据链:从运行AI到芯片即AI的范式重构

1. 这不是概念炒作&#xff0c;而是芯片与数据链正在发生的底层重构“AI 深入芯片与行业数据链”——这八个字不是科技媒体惯用的模糊修辞&#xff0c;而是我过去三年在半导体设计公司、工业物联网平台和金融风控系统三类一线场景中反复验证的真实路径。它指的不是把AI模型跑在… · 2026/9/25 18:56:32

SAP + AI 第3节 PS3大对象一些典型注解
SAP + AI 第3节 PS3大对象一些典型注解

SAP AI 第3节 PS3大对象一些典型注解PS模块三大CDS对象进阶知识点&#xff08;逐项讲解源文件对照版&#xff09;知识点1&#xff1a;WBS层级结构机制知识点2&#xff1a;状态管理机制知识点3&#xff1a;延期/逾期天数计算知识点4&#xff1a;货币、单位、数量、日历、文本等… · 2026/9/25 18:56:26

皮下的避孕“小棍“不见了、摸不到,怎么办?这份最新指南给出标准答案
皮下的避孕“小棍“不见了、摸不到,怎么办?这份最新指南给出标准答案

皮下的避孕"小棍"不见了、摸不到&#xff0c;怎么办&#xff1f;这份最新指南给出标准答案避孕植入物&#xff08;俗称"皮埋"&#xff09;放进手臂后&#xff0c;本该随时能摸到、方便取出。可一旦它"跑深了"或摸不到&#xff0c;取不出来怎么办… · 2026/9/25 18:56:19

A2A + CrewAI + OpenRouter 图表生成 Agent 教程:用 TaoToken 统一 Key 打通多智能体协作链路
A2A + CrewAI + OpenRouter 图表生成 Agent 教程:用 TaoToken 统一 Key 打通多智能体协作链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 18:56:19

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码