maven插件简单创建

来源:互联网 发布:pdf编辑软件电脑版 编辑:程序博客网 时间:2024/05/17 04:45

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 0