Maven高级之插件开发

前言

终于来到了Maven的插件开发,其实Maven的插件并没有想象的那么难,刚开始讲Maven基础的时候就演示了一下JDK是如何打包的,Maven打包只是在JDK打包上封装了一层而已,Maven也支持自定义插件开发

创建

我们先使用quickstart原型创建出一个Maven项目,在pom.xml里面引入一下依赖:

<dependency><groupId>org.apache.maven</groupId><artifactId>maven-plugin-api</artifactId><scope>provided</scope><version>3.0</version>
</dependency>
<dependency><groupId>org.apache.maven.plugin-tools</groupId><artifactId>maven-plugin-annotations</artifactId><version>3.4</version><scope>provided</scope>
</dependency>

添加好依赖后,需修改packaging打包方式:

<packaging>maven-plugin</packaging>

 之前也讲过packaging有哪几种方式,大家可以各自去在下的上篇博客看看

自定义插件

先创建一个类CleanTestPlugin,继承AbstractMojo,这个抽象类是Maven插件开发需实现的一个类,然后实现里面的execute方法

 然后打包并且安装到本地仓库上(命令:mvn clean install

安装好后,可以在命令行中输入:

 就能看到打印的日志了。

如果想要在插件中打包时传入参数,也是可以支持,这里就写出几个示例:

 然后在其他项目引入改插件的时候,绑定好参数即可

 由于只绑定了clean的生命周期,所以只需执行mvn clean即可

结语

自定义插件基本结束啦,下篇讲讲Maven原型(archetype)吧。

是不是看完后,感觉没啥难的,现在回过头来看一下Maven自带的maven-jar-plugin插件,其实没有想象中那么难,只是结构比较复杂。

看完这个之后,大家也可以去看一下SpringBoot的插件源代码,这个插件就开发的比较厉害了,如果比较细心的任就会发现,使用这个插件打包出来的可执行包,执行的类并不是执行的类,而是通过SpringBoot同一的启动类去启动 。

在自定义插件上,可能大部分人都用不到,如果有兴趣的话,可以一起来讨论一下。

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

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

相关文章

Maven高级之archetype(原型/骨架)开发

前言 archetype这个的主要功能就是将写好的项目模块打包成一个原型&#xff0c;然后提供给其他人使用&#xff0c;这样别人就可以快速使用这个项目模板了。 这个东西虽然很多人都基本用不上&#xff0c;但原型这个东西用的好还是很方便的&#xff0c;能够在开发新项目上省去大…

深度学习在搜索业务中的探索与实践

本文根据美团高级技术专家翟艺涛在2018 QCon全球软件开发大会上的演讲内容整理而成&#xff0c;内容有修改。引言 2018年12月31日&#xff0c;美团酒店单日入住间夜突破200万&#xff0c;再次创下行业的新纪录&#xff0c;而酒店搜索在其中起到了非常重要的作用。本文会首先介绍…

SpringBoot自动配置原理流程

前言 新公司太忙了&#xff0c;都没啥空更新博客&#xff0c;就随便记录一下以前的学习笔记吧。SpringBoot是基于Spring上的衍生框架&#xff0c;只要看懂了Spring的话&#xff0c;学这个就比较简单了&#xff1b;SpringBoot也是在当前微服务时代下流行的框架&#xff0c;并且…

SpringBoot自定义Starter(自动配置类)

前言 SpringBoot其实从诞生以来围绕的核心就是快速构建项目&#xff0c;快速构建的前提是有人帮你做好轮子&#xff0c;开发者只要拿来即用就好了&#xff0c;而造好轮子的人就是SpringBoot的开发者&#xff0c;引入自动配置的形式帮助开发者快速创建项目&#xff0c;而自动配…

Java并发编程之synchronized关键字解析

前言 公司加班太狠了&#xff0c;都没啥时间充电&#xff0c;这周终于结束了。这次整理了Java并发编程里面的synchronized关键字&#xff0c;又称为隐式锁&#xff0c;与JUC包中的Lock显示锁相对应&#xff1b;这个关键字从Java诞生开始就有&#xff0c;称之为重量级锁&#xf…

通过代理模式 + 责任链模式实现对目标执行方法拦截和增强功能

前言 最近需要实现一个插件功能&#xff0c;但是如果做成两个接口的话&#xff08;即执行前和执行后&#xff09;&#xff0c;那么会降低插件的可玩性&#xff0c;所以需做成类似AOP的环绕通知形式&#xff0c;所以就使用到了责任链模式和代理模式进行实现。 介绍 代理模式(P…

vscode Go 1.11.4 编译错误 need Delve built by Go 1.11 or later

更新golang的版本为1.11.4之后vscode编译错误&#xff1a;executables built by Go 1.11 or later need Delve built by Go 1.11 or later 原因是delve的版本太老了&#xff0c;需要更新&#xff0c;且delve的github地址已经更换&#xff0c;很多教程里的地址是不对的 新地址安…

Navicat使用教程:使用Navicat Query Analyzer优化查询性能(第1部分)

下载Navicat Monitor最新版本Navicat Monitor 是一套安全、简单而且无代理的远程服务器监控工具。它具有强大的功能使你的监控发挥最大效用。受监控的服务器包括 MySQL、MariaDB 和 Percona Server&#xff0c;并与 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure …

第一家云创大数据产业学院在佛山职业技术学院挂牌

2019年1月10日&#xff0c;“云创大数据产业学院揭牌暨战略合作协议签署仪式”在佛山职业技术学院电子信息学院会议室举行。云创大数据总裁刘鹏教授、市场部经理单明月&#xff0c;佛山职业技术学院电子信息学院院长唐建生、副院长田钧、学院办公室主任赵雪章、信息工程系主任乔…

String与StringBuffer和StringBuilder的根本区别

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

前端Http协议缓存初解

[TOC] 简介 用户获取网络资源&#xff0c;需要通过非常长的网络去服务器上请求资源,另外服务端为了应对大量的用户请求而不断的提升硬件性能与带宽。这对用户与服务端都非常的不友好。而缓存就是为了解决用户请求速度与释放服务器压力而生的。 为什么我会写Http缓存&#xff0c…

详解java访问修饰符

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

企业为什么要做SEO,它的重要性有哪些?

对于SEO工作而言&#xff0c;我们知道一个网站做SEO的基础诉求就是让用户和搜索引擎更好的理解网站内容&#xff0c;虽然随着搜索引擎算法技术的迭代&#xff0c;目前SEO面临更大的挑战与竞争&#xff0c;但基于搜索营销&#xff0c;它目前仍然显得十分重要。 那么&#xff0…

白话说编程之java线程

白话说编程之java线程线程和进程&#xff1a;进程&#xff1a;线程&#xff1a;线程和进程的区别&#xff1a;详解多线程:并发为什么使用并发并发的执行原理并行线程的五种状态&#xff1a;创建状态&#xff1a;就绪状态&#xff1a;运行状态&#xff1a;阻塞状态&#xff1a;死…

powerdesigner显示工具面板_photoshop教程-画笔工具预设与选项设置

定义画笔预设在打开的“画笔”面板中&#xff0c;单击左侧的“画笔笔尖形状”名称&#xff0c;可显示笔尖形状图案。单击“画笔”面板左侧其他不同的选项名称&#xff0c;在右侧就会显示其对应的调节项。只单击不同选项前面的方框&#xff0c;可使此选项有效&#xff0c;但右侧…

深入理解== 和 equals 的区别

深入理解 和 equals 的本质区别简介区别&#xff1a;图解&#xff1a;注意点&#xff1a;源码分析&#xff1a;总结分享一波:程序员赚外快-必看的巅峰干货简介 初学者常常被" “和‘equals ’所折磨&#xff0c;为什么&#xff0c;因为他们的大概意思相同&#xff0c;都是…

java sleep和wait区别

为什么80%的码农都做不了架构师&#xff1f;>>> 关于sleep和wait区别解析&#xff1a; sleep只是释放CPU资源&#xff0c;并不释放资源锁对象&#xff0c;wait是会释放掉资源锁对象。 比如&#xff0c;有个锁对象object&#xff0c;线程1和线程2都会锁住object对象…

深入理解equals和hashCode关系和区别

深入理解equals和hashCode关系和区别直入主题&#xff1a;区别&#xff1a;1.他们判断对象相同的方式不一样&#xff1a;2.他们判断对象是否相等的准确率不一样&#xff1a;改写equals时总是要改写hashcode分享一波:程序员赚外快-必看的巅峰干货为什么要说equals和hashCode这两…

Jdk 和 jre 的 关系和区别

Jdk 和 jre 的 关系和区别 区别&#xff1a; JDK&#xff1a;是Java Development Kit 的简称–>翻译过来就是&#xff1a;Java 开发工具包。是程序员使用java语言编写java程序所需的开发工具包&#xff0c;是提供给程序员使用的。 JRE&#xff1a;是Java Runtime Environm…