再续maven 编写自己的maven插件

伴随着日常开发的需要,我们可能需要用到的maven插件,这些插件一部分可以去网上下载,一部分可以去问下公司里面的前辈们,可是还有第三种情况的时候,比如我们需要特殊服务的时候,就需要自定义编写maven插件了来满足我们的开发需求了

下面简单介绍一下如何编写自己的maven插件


在编写maven插件时候有两点需要注意:

第一:编写插件pom.xml

第二:编写真正做事情的插件java类


接下来先看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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>sample.plugin</groupId>
  <artifactId>hello-maven-plugin</artifactId>
  <version>1.0-SNAPSHOT</version>
  <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>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>2.0</version>
    </dependency>
  </dependencies>

</project>


这个pom.xml文件要注意两点,

1).一个就是<packaging>的类型,应该是maven-plugin

2).一个就是Maven插件项目必须依赖一个插件maven-plugin-api

接下来我们再来看客户端提供的“特殊Maven服务"的类插件类必须继承org.apache.maven.plugin.AbstractMojo

其实我们的maven插件是嵌入很多的Mojo的

接下来看具体代码吧

package sample.plugin;

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

/**
 * @goal info
 * @phase compile
 * @requireProject false
 * @author cxb
 * 2013-3-5 下午03:01:19
 */
public class GreetingMojo extends AbstractMojo{
    /**
     * @parameter expression="${name}"
     * @required
     */
    String name;

    /**
     * @parameter expression="${age}"
     * @required
     */
    int age;

    /**
     * @parameter expression="${isOk}"
     * @required
     */
    boolean isOk;

    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info(this.toString());
    }

    @Override
    public String toString() {
         return "String is : \"" + name + "\"" + "int is : \"" + age + "\""
         + "boolean is : \"" + isOk + "\"";
    }
}

这里面的一些注解比较有意思哦,可别以为它是普通的注释信息,Maven编译的时候不会忽略这些注释信息的,这些注释信息暗含了该插件的执行信息。

@goal info:表示该插件的服务目标

@phase compile:表示该插件的生效周期阶段

@requiresProject false:表示是否依托于一个项目才能运行该插件

@parameter expression="${name}":表示插件参数,使用插件的时候会用得到

@required:代表该参数不能省略


3)使用自定义插件

使用插件之前先进行安装install

之后在执行如下命令:

sample.plugin:hello-maven-plugin:info -Dname=chen -Dage=25 -DisOk=true









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值