自定义maven插件

olivee 5年前 ⋅ 1275 阅读

1参考资料

可以参考http://central.maven.org/maven2/org/apache/maven/plugins/maven-war-plugin/2.2/中的maven-war-plugin-2.2-source-release.zip

2改造maven插件

呼叫平台需要修改打包后class文件的日期,可以修改maven-war-plugin插件,修改org.apache.maven.plugin.war.WarMojo类的performPackaging( File warFile )方法

3自定义maven插件

3.1定义pom.xml

<packaging>maven-plugin</packaging>

3.2添加依赖

不同插件可能添加的依赖不同,以下为一个示例

<dependencies>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>3.5.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>3.5</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

3.3编写java类

插件名为sogoucloud,支持msg,List数组和带参数的使用

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;

import java.util.List;


@Mojo(name="sogoucloud",defaultPhase= LifecyclePhase.PACKAGE)
public class SogoucloudMojo  extends AbstractMojo {

    @Parameter
    private String msg;

    @Parameter
    private List<String> options;

    @Parameter(property = "args")
    private String args;


    public void execute() throws MojoExecutionException,MojoFailureException{
        System.out.println("hello sogoucloud:"+msg);
        System.out.println("hello sogoucloud:"+options);
        System.out.println("hello sogoucloud:"+args);
    }

}