一、创建Maven项目



首先创建一个Maven插件项目,可以手动或使用mvn archetype:create从原型创建。pom.xml配置如下:




1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27




​<?​​ ​​xml​​  ​​version​​ ​​=​​ ​​"1.0"​​  ​​encoding​​ ​​=​​ ​​"UTF-8"​​ ​​?>​


​<​​ ​​project​​  ​​xmlns​​ ​​=​​ ​​"http://maven.apache.org/POM/4.0.0"​


​xmlns:xsi​​ ​​=​​ ​​"http://www.w3.org/2001/XMLSchema-instance"​


​xsi:schemaLocation​​ ​​=​​ ​​"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"​​ ​​>​


 


​<​​ ​​groupId​​ ​​>com.cdai.demo</​​ ​​groupId​​ ​​>​


​<​​ ​​artifactId​​ ​​>hello-maven-plugin</​​ ​​artifactId​​ ​​>​


​<​​ ​​version​​ ​​>1.0-SNAPSHOT</​​ ​​version​​ ​​>​


​<​​ ​​modelVersion​​ ​​>4.0.0</​​ ​​modelVersion​​ ​​>​


​<​​ ​​packaging​​ ​​>maven-plugin</​​ ​​packaging​​ ​​>​


 


​<​​ ​​name​​ ​​>hello-maven-plugin</​​ ​​name​​ ​​>​


​<​​ ​​url​​ ​​>http://maven.apache.org</​​ ​​url​​ ​​>​


 


​<​​ ​​properties​​ ​​>​


​<​​ ​​project.build.sourceEncoding​​ ​​>UTF-8</​​ ​​project.build.sourceEncoding​​ ​​>​


​</​​ ​​properties​​ ​​>​


 


​<​​ ​​dependencies​​ ​​>​


​<​​ ​​dependency​​ ​​>​


​<​​ ​​groupId​​ ​​>org.apache.maven</​​ ​​groupId​​ ​​>​


​<​​ ​​artifactId​​ ​​>maven-plugin-api</​​ ​​artifactId​​ ​​>​


​<​​ ​​version​​ ​​>2.2.1</​​ ​​version​​ ​​>​


​</​​ ​​dependency​​ ​​>​


​</​​ ​​dependencies​​ ​​>​


 


​</​​ ​​project​​ ​​>​





与普通的pom.xml没太多不同,要注意的两处是:


1)packaging类型为maven-plugin


2)需要依赖maven-plugin-api





二、开发Helloworld插件



Maven插件类需要继承AbstractMojo(Mojo即Maven Plain Old Java Object)。同时,


与普通Java类相比的特别之处是:在JavaDoc注释中使用注解对插件进行配置。具体插件代码如下:




1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25


26


27




​package​​  ​​com.cdai.demo.maven;​


 


​import​​  ​​org.apache.maven.plugin.AbstractMojo;​


​import​​  ​​org.apache.maven.plugin.MojoExecutionException;​


​import​​  ​​org.apache.maven.plugin.MojoFailureException;​


 


​/**​


​* Maven插件的Helloworld​


​* User: cdai​


​*​


​* @goal info​


​* @phase compile​


​* @requiresProject false​


​*/​


​public​​  ​​class​​  ​​HelloMavenPlugin ​​ ​​extends​​  ​​AbstractMojo {​


 


​/**​


​* @parameter expression="${greeting}" default-value="Helloworld!!!"​


​*/​


​String greeting;​


 


​@Override​


​public​​  ​​void​​  ​​execute() ​​ ​​throws​​  ​​MojoExecutionException, MojoFailureException {​


​getLog().info(greeting);​


​}​


 


​}​







三、安装运行插件



开发完成后,直接mvn install将插件安装到本地Repository库中后,就可以在命令行运行插件了。


运行命令为:mvn [groupId]:[artifactId]:[version]:[goal] -D[param]=[value]



例如上面开发的插件就可以执行:


     mvn com.cdai.demo:hello-maven-plugin:1.0-SNAPSHOT:info -Dgreeting=hi-maven



Maven2插件开发入门_java