maven插件简单创建

1.建立一个普通的maven项目,如:mvn archetype:create -DgroupId=groupId -DartifactId=artifactId

2.在项目的pom.xml中添加或编辑打包方式:<packaging>maven-plugin</packaging>

3.在pom.xml中添加开发插件需要的依赖:

<dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>3.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <version>3.3</version>
        </dependency>
    </dependencies>

4.建立Mojo

Maven中执行的插件的每个goal都是一个Mojo,示例:

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import java.io.File;
import java.net.URL;
import java.util.Date;
/**
 * User: Administrator
 * Date: 14-7-13 下午5:20
 */
@Mojo(name = "advance")
public class AdvanceGoal extends AbstractMojo {
    @Parameter
    private String myString;
    @Parameter
    private boolean myBoolean;
    @Parameter
    private int myInteger;
    @Parameter
    private Double myDouble;
    @Parameter
    private Date myDate;
    @Parameter
    private File myFile;
    @Parameter
    private URL myUrl;
    @Override
    public String toString() {
        return "AdvanceGoal{" +
                "myString='" + myString + '\'' +
                ", myBoolean=" + myBoolean +
                ", myInteger=" + myInteger +
                ", myDouble=" + myDouble +
                ", myDate=" + myDate +
                ", myFile=" + myFile +
                ", myUrl=" + myUrl +
                '}';
    }
    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("My Advance Mojo *--* !!!");
        getLog().info(toString());
        getLog().info("My Advance Mojo *--* !!!");
    }
}

上面的代码定义了一个名字为“advance”的mojo,它就是插件的一个goal,并且通过注解@Parameter定义了可接受的参数。

5.执行mvn install 将插件安装到本地库,之后就可以使用了。

6.使用示例:

在自己的项目(要使用插件的项目)中添加插件的依赖:

<build>
        <plugins>
            <plugin>
                <groupId>groupId</groupId>
                <artifactId>artifactId</artifactId>
                <version>1.0</version>
                <configuration>
                    <myString>stringvalue</myString>
                    <myBoolean>false</myBoolean>
                    <myDate>2005-10-06 2:22:55.1</myDate>
                    <myDouble>10.1</myDouble>
                    <myInteger>10</myInteger>
                    <myUrl>http://maven.apache.org</myUrl>
                    <myFile>C:\Users\Administrator\Desktop\a.txt</myFile>
                </configuration>
                <executions>
                    <execution>
                        <id>first</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>advance</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
其中<configuration>内的节点名需要和代码中 @ Parameter参数注解的属性名一致;其中的 <phase>compile</phase>表示此插件在compile阶段引入, <phase>的取值必须是maven构建生命周期其中的值,maven是一个以构建周期为轴线的工程,插件可以附加到其构建周期中的某些阶段上。

验证:执行:mvn compile,输出:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Demo-default 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- mymvnplugin:1.0:advance (first) @ Demo ---
[INFO] My Advance Mojo *--* !!!
[INFO] AdvanceGoal{myString='stringvalue', myBoolean=false, myInteger=10, myDouble=10.1, myDate=Thu.......
[INFO] My Advance Mojo *--* !!!
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值