【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。

相关新闻

【Maven系列3】坐标与依赖

【Maven系列3】坐标与依赖

主要讲解Maven的依赖管理相关知识。前言Maven确实比较简单,估计大家在工作期间,每天抽出一点时间,基础部分几天就可以学完,所以这块感觉真没有啥好讲的。这篇文章先讲解依赖管理的基础知识,然后再结合一个简单的示例消…

2026/9/25 18:28:19 阅读更多 →
【MyBatis系列1】基础知识(上)

【MyBatis系列1】基础知识(上)

主要讲解 MyBatis 的基础知识前言上个月完成了“Java 并发编程系列”和“Spring 基础系列”知识的学习,这个月我们主要学习 MyBatis。MyBatis 网上的资料真的非常多,整个知识体系也非常系统,如果要整体学完,需要花很多时间&#x…

2026/9/25 18:28:19 阅读更多 →
【MyBatis系列2】MyBatis与Spring整合

【MyBatis系列2】MyBatis与Spring整合

通过示例讲解MyBatis和Spring整合的流程。前言这个MyBatis和Spring整合示例,是我今年3月份刚转岗时需要熟悉MyBatis时写的,主要是想知道项目是如何从0到1,在Spring中用到MyBatis。这个示例是参考“C语言中文网”,但是里面的示例不…

2026/9/25 18:28:19 阅读更多 →

最新新闻

NeuroImage: 脑梗死后大脑-小脑结构-功能耦合在运动恢复中的作用

NeuroImage: 脑梗死后大脑-小脑结构-功能耦合在运动恢复中的作用

本篇文献发表在NeuroImage杂志。所发布内容旨在与大家分享学术新知,促进交流学习,版权归原作者或原出处所有,感谢各位学者的辛勤付出与研究成果。1.引言 下肢运动功能障碍是脑梗死后最常见的功能缺损之一,其主要病理基础是皮层下…

2026/9/25 19:05:41 阅读更多 →
rk3576 适配光、距传感器 stk3400

rk3576 适配光、距传感器 stk3400

rk3576 适配光(强度)、距(离)传感器 stk3400 接近感应芯片(Proximity Sensor)在 Android 系统中扮演着重要角色,它通过检测物体(通常是用户的脸或耳朵)与设备之间的距离,实现智能交互与功能优化,广泛应用于手机、平板等移动设备。 以通话场景为例:当用户接听电话并将…

2026/9/25 19:05:41 阅读更多 →
rk3576 适配霍尔传感器

rk3576 适配霍尔传感器

rk3576 适配霍尔传感器 霍尔传感器在平板设备中扮演着重要角色,它通过检测磁场变化来实现自动化控制和功能触发,常见应用场景包括手机壳和磁吸键盘等。 磁吸式键盘或保护壳 许多平板设备配备磁吸式键盘或保护壳,霍尔传感器用于检测外部磁铁的存在或位置,帮助系统自动识别键…

2026/9/25 19:05:41 阅读更多 →
常用医疗系统数据库在AI时代的快速需求改进(二)

常用医疗系统数据库在AI时代的快速需求改进(二)

2.10 主数据与术语字典库:最容易被忽视,收益最大 如果要在这份盘点中挑出一个"投入产出比最高"的改造对象,那就是主数据与术语字典。因为它被所有系统依赖,改一次,全院受益。 三大类主数据 第一类:患者主索引(EMPI) EMPI 的作用是给同一个患者在不同系统…

2026/9/25 19:04:41 阅读更多 →
数字赋能优服务智绘营商新生态 —— 助力区域营商环境提质增效

数字赋能优服务智绘营商新生态 —— 助力区域营商环境提质增效

​在持续优化营商环境、激活市场主体活力的时代背景下,亘川智城营商环境服务系统立足技术服务商正向赋能定位,恪守职权法定原则,聚焦市场主体全生命周期发展需求,打通多源数据资源,构建集市场主体管理、重点项目服务、…

2026/9/25 19:04:41 阅读更多 →
Atlas 300V Pro部署YOLO实战:从ONNX到om及推理调优全指南

Atlas 300V Pro部署YOLO实战:从ONNX到om及推理调优全指南

第一次拿到Atlas 300V Pro的那天,我盯着这张卡愣了好一会儿:被动散热片铺满整卡,没有风扇、没有外接供电,插上PCIe槽就能跑,官方标称的INT8算力却比很多300W级别的GPU卡还好看。如果你搜过"atlas 300v 24g 是运算…

2026/9/25 19:04:40 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →