前言
终于来到了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同一的启动类去启动 。
在自定义插件上,可能大部分人都用不到,如果有兴趣的话,可以一起来讨论一下。