前言

终于来到了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同一的启动类去启动 。

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

Maven高级之插件开发相关推荐

  1. Maven高级-私服

    Maven高级-私服 6,私服 6.1 私服简介 6.2 私服安装 步骤1:下载解压 步骤2:启动Nexus 步骤3:浏览器访问 步骤4:首次登录重置密码 6.3 私服仓库分类 6.4 本地仓库访问私 ...

  2. Maven 高级玩法

    实用技巧 Maven 提速 多线程 # 用 4 个线程构建,以及根据 CPU 核数每个核分配 1 个线程进行构建 $ mvn -T 4 clean install $ mvn -T 1C clean ...

  3. 取代 Ant:使用 Maven 管理 Wowza 插件开发

    Wowza 官方提供的 Eclipse 插件使用的是 Ant 作为项目管理工具(参考< Eclipse 安装/更新 Wowza IDE 插件的步骤>),如下图所示:         bui ...

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

    前言 archetype这个的主要功能就是将写好的项目模块打包成一个原型,然后提供给其他人使用,这样别人就可以快速使用这个项目模板了. 这个东西虽然很多人都基本用不上,但原型这个东西用的好还是很方便的 ...

  5. 【黑马Java笔记+踩坑】Maven高级

    用于复习快速回顾. Maven基础: JavaWeb基础3--Maven&MyBatis_vincewm的博客-CSDN博客 目录 0,解除端口调用 1,分模块开发 1.1 分模块开发设计 1 ...

  6. Maven高级-本地仓库访问私服配置及私服资源上传与下载

    目录 一.本地仓库访问私服配置 二.私服资源上传与下载 一.本地仓库访问私服配置 我们通过IDEA将开发的模块上传到私服,中间要经过本地的Maven的,本地Maven需要知道私服的访问地址以及私服访问 ...

  7. Maven高级5-私服

    1. 简介 一台独立的服务器,用于解决团队内部的资源共享与资源同步问题(模拟了中央服务器): https://help.sonatype.com/repomanager3/download 命令行启动 ...

  8. Maven高级——继承与聚合——继承关系实现

    将Maven拆分成多个项目之后又会引发新的问题,继承与聚合就是用来解决这些问题. 这里的继承就像java中类和类之间的继承一样,工程之间也是可以实现继承的. 继承解决的问题 在之前拆分的三个模块中每个 ...

  9. Maven高级11:跳过测试的三种手段;(maven在package或者install等的时候,跳过test不去执行测试用例)(PS:本篇博客中的【使用配置跳过测试】并没有实测成功)

    说明: (1)本篇博客的内容:maven跳过测试的几种手段: (2)声明:跳过测试这部分仅仅作为了解即可,在实际中我们一般也可能不会去跳过测试: 目录 一:跳过测试,简介:(测试很重要,为什么有时我们 ...

最新文章

  1. python开发的软件有哪些-有哪些值得推荐的 Python 开发工具?
  2. JAVA8 Stream方法使用详解reduce、IntStream(二)
  3. Windows设置HTML,windows怎么添加静态路由
  4. 利用numpy生成各种波
  5. 修改了模板文件tpl如何立即生效_Views视图与模板
  6. facebook对话链接_Facebook已开源其最新的聊天机器人Blender
  7. 帆软报表实现Excel导入,并校验数据
  8. 《深度学习笔记》——防止梯度消失的学习笔记
  9. 一致性hash算法的应用研究学习
  10. 叉积求点到平面距离_求一个点到曲线或折线的最短距离?
  11. xy转utm坐标(个人推算)
  12. 利用 QTcpSocket 实现的进程间通信
  13. 机器人genghis_历史上最重要的10款机器人 有些逼真到逆天
  14. 深入Scala系列之一组件重用
  15. 【Linux系列文章】网络配置
  16. ListView 仿QQ微信侧滑出现删除按钮
  17. 算法时间复杂度的计算:从几道题目讲起
  18. Matlab Fmincon 解决带积分的二元非线性规划问题
  19. 【cocos2dx 3.3 lua】04 纸牌翻转效果--类似QQ斗地主癞子效果
  20. unity中Standard Assets导入错误的解决方法

热门文章

  1. html 选中状态,html默认选中状态
  2. java 数组 反射_【译】10. Java反射——数组
  3. oracle的一些基本操作,Oracle中的一些基本操作
  4. 陷阱计算机音乐谱大全,陷阱 原版C调-王北车-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
  5. 用python玩转数据慕课答案第三周_大学慕课用Python玩转数据答案公众号
  6. 华为交换机命令_华为交换机常用命令
  7. python 怎么将数组转为列表_怎么将视频转为GIF动态图 表情包怎么制作
  8. repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...
  9. 玩转linux文件描述符和重定向,玩转Linux文件描述符和重定向
  10. 潜流式湿地计算_人工湿地计算书