如何编写maven的helloworld插件

一.概述

maven提供了一套插件机制,我们只要按照maven定义的规范编写一个插件,maven就能运行我们的插件,在平时开发的过程中我们经常会开发一些maven的插件工具,这写插件工具可以实现类冲突检测,工程部署,工程打包…等等。这里就大致记录一下如何编写一个maven的Hello Word插件,就是说在maven编译的过程中输出Hello Word。

二.如何编写maven插件

1.执行下面的maven命令,生成一个maven的插件工程

1
mvn archetype:create -DgroupId=com.alibaba.maven -DartifactId=maven-hello-plugin -DarchetypeArtifactId=maven-archetype-mojo

-DgroupId和-DartifactId就不用多解释了,插件本身也是一个二方库,二方库需要坐标,这样别人才能依赖。
-DarchetypeArtifactId=maven-archetype-mojo 创建maven插件工程的时候必须指定这个参数,参数值也需要写成上面这样。

2.进入插件工程所在的目录,并把插件工程变成一个eclipse可识别的工程,然后导入eclipse进行开发。

1
2
cd maven-hello-plugin
mvn eclipse:clean eclipse:eclipse

3.在eclipse中开发,编写下面的类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;

/**
 * @goal helloworld
 */
public class MyMojo extends AbstractMojo {

    /**
     * @parameter expression="${helloworld.words}" default-value="Hello World!"
     */
    private String words;

    public void execute() throws MojoExecutionException {
        getLog().info(words);
    }
}

4.在插件的目录下面执行

1
mvn clean install

把这个插件install到本地的maven仓库中
5.插件的运行

1
mvn com.alibaba.maven:maven-hello-plugin:1.0-SNAPSHOT:helloworld

输出: Hello World

1
mvn com.alibaba.maven:maven-hello-plugin:1.0-SNAPSHOT:helloworld -Dhelloworld.words="welcome!"

输出: welcome

三.注意点

  • maven2中插件参数的注入都是通过javadoc的,使用的Plexus
  • 每个maven插件都是一个MOJO,我们自己的MOJO必须extends AbstractMojo,同时我们需要重写execute方法
  • getLog()实际上是maven编译时信息输出的地方
  • 对于maven这种插件的设计理念可以在平时开发的过程中借鉴