新建maven plugin

项目中需要maven编译时能对空的goal进行默认处理,而不是报错

自动动手试了下maven plugin的编写,看了下资料不是很难

1、新建工程

可以使用eclipse的mvn插件快捷创建mvn project

archetype选择时

group Id为org.apache.maven.archetypes 

Artifact Id为maven-archetype-quickstart

 

2、修改pom文件

2.1修改packaging方式

<packaging>jar</packaging>

<packaging>maven-plugin</packaging>

2.2 增加maven-plugin-api的依赖

        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>2.0</version>
        </dependency>

 

2.3 修改一些groupId、artifactId

  <groupId>com.alibaba.b2b.platform.qp</groupId>
  <artifactId>MavenPlugin</artifactId>
  <version>1.0.0</version>
  <packaging>maven-plugin</packaging>
 

3、新建类继承自AbstractMojo类,并实现execute()方法

package com.alibaba.b2b.platform.qp.MavenPlugin;

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

/**
 * @author gengxin.wugx 2011-9-21 下午03:21:45
 * @goal maven-plugin-test
 */
public class MavenPluginTest extends AbstractMojo {

    public void execute() throws MojoExecutionException {
        getLog().info("Empty Maven2");
    }
}

这边要注意的地方有三点

(1)、继承AbstractMojo类

(2)、实现execute()方法

(3)、添加@goal annotation表示goal名字,在编译命令时需要使用到

 

4、mvn clean install编译打包到本地库

 

 

5、手动将plugin包添加到本地maven库

有时需要手动将plugin包导入本地库,可使用如下命令,对于大多数情况此步并不需要

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>

其中Dfile为插件包的全路径

DgroupId、DartifactId、Dversion都已在pom中指定

Dpackaging为plugin包的后缀及Dfile文件的后缀

 

6、运行插件的命令

现在需要对另一个项目用上述插件,可使用如下命令

mvn com.alibaba.b2b.platform.qp:MavenPlugin:1.0.0:maven-plugin-test

mvn 加包名:类名:版本号:goal名

版本号不可缺少,为pom文件中指定

goal名为继承自AbstractMojo类的@goal annotation

 

参考:

http://www.sonatype.com/books/mvnref-book/reference/writing-plugins-sect-custom-plugin.html

http://maven.apache.org/guides/plugin/guide-java-plugin-development.html

http://www.avajava.com/tutorials/lessons/how-do-i-create-a-hello-world-goal-for-a-maven-plugin.html?page=1

你可能感兴趣的:(plugin)