编写自己的maven插件

Maven是一个Java语言编写的项目依赖和构建工具。

Maven常用命令包括:

  • clean
  • test
  • compile
  • package
  • install
  • deploy

当然还有一些不是特别常用的命令,如:verify,site等

上面这些命令的执行就依赖于各种不同maven-plugin

每个命令都会包含一个或者几个Lifecycle,每个Lifecycle有可能会默认的绑定到某一个(或几个)插件的某一个goal上。

这里有两个概念Lifecyclegoal

  • Lifecycle默认由Maven定义,默认Lifecycle详见Lifecycle_Reference
  • goal代表一个目标(完成一个任务),每个以插件可以有一个或者多个goal

譬如clean就包含3个Lifecycle

  • pre-clean
  • clean
  • post-clean

Lifecycleclean则内建绑定到maven-clean-plugin的clean这个goal

更多详情请见Built-in_Lifecycle_Bindings

那么如何编写一个Maven的插件呢?

  • 建立一个Maven的项目,一般项目名称就会是插件的名称,

    项目的命名是有一定的讲究的,maven内建的插件名称都是maven-xxx-plugin这样的模式,而我们的插件名称一般建议叫做xxx-maven-plugin,这个在maven的官网上有说明。

  • 修改pom的packaging类型为maven-plugin

    打包流程上会有不同

  • 增加依赖

    根据插件功能的不同要依赖不同的jar

  • 增加插件依赖

    maven-plugin-plugin

  • 编写自己的类XxxxMojo,并继承AbstractMojo
  • 在类上增加Annotation@Mojo来说明XxxxMojo:
    • name:goal的名称
    • defaultPhase:默认绑定的Lifecycle
  • 实现execute方法
  • 测试(可以使用JUnit,也有插件可以使用)
  • 打包发布

这样一个简单的maven插件就开发完成(我的Maven插件Sample工程),但是要开发一个可用的插件,还有很多工作要做。

参考: