很简单,只需要建立一个项目文件夹,包含一个类(真正做事情的插件Java类。),一个pom.xml 文件
1.建立文件夹mymvnplugin
2.创建一个类
在mymvnplugin创建文件夹src\main\java\com\hello 作为mojo类的包路径
HelloWorldMojo.java
package com.hello;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
/**
* @goal sayhello
* @phase compile
* @requiresProject false
*/
public class HelloWorldMojo extends AbstractMojo {
/**
* @parameter expression="${arg1}"
* @required 执行的时候必须带这个参数
*/
String arg1;
/**
* @parameter expression="${arg2}" 执行的时候可以没有这个参数
*/
int arg2;
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info(arg1+arg2);
}
}
@goal sayhello:表示该插件的服务目标
@phase compile:表示该插件的生效周期阶段
@requiresProject false:表示是否依托于一个项目才能运行该插件
@parameter expression="${arg1}":表示插件参数,使用插件的时候会用得到
@required:代表该参数不能省略
3.pom.xml
在mymvnplugin文件夹下建立pom.xml文件
<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.0http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId> 与包名匹配
<artifactId>hello</artifactId> 插件的名字
<version>1.0</version>
<packaging>maven-plugin</packaging>
<name>hello</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
</project>
注意两点,1:<packaging>的类型,应该是maven-plugin 。
2:Maven插件项目必须依赖一个插件maven-plugin-api。
创建的插件类必须继承自类org.apache.maven.plugin.AbstractMojo。这里面的一些注解不是普通的注释信息,Maven编译的时候不会忽略这些注释信息的,这些注释信息暗含了该插件的执行信息。
4.使用插件
安装:进入cmd命令行模式,进入mymvnplugin文件夹下,执行mvn clean install
使用: mvn com:hello:sayhello -Darg1=hello -Darg2=10
插件输出相关信息里面包含hello10
相关信息:
INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building hello 1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- hello:1.0:sayhello (default-cli) @ hello ---
[INFO] hello10
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.515s
[INFO] Finished at: Fri Dec 20 16:40:35 CST 2013
[INFO] Final Memory: 6M/101M
[INFO] ------------------------------------------------------------------------
sayhello
到此为止,一个简单的插件就可以使用了。