Maven2插件开发入门


一、创建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"?>
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
    <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





参考资料



原文地址:https://www.cnblogs.com/xiaomaohai/p/6157710.html