Maven插件編寫之Mojo

一、Mojo

Mojo: Maven plain Old Java Object,實際上是一個Maven的目標,插件包含任意數量的目標(Mojos)。

按照官方建議,maven插件的命名建議爲xxxx-maven-plugin

自定義插件maven執行命令爲mvn groupId:artifactId:goal,使用推薦命名方式,maven命令可以簡化爲mvn xxxx:goal

二、創建插件

1.pom文件

指定打包類型爲maven-plugin

<?xml version="1.0" encoding="UTF-8"?>
<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>org.example.tools</groupId>
    <artifactId>hello-maven-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>maven-plugin</packaging>

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

2.mojo實現類

@Mojo註解指定目標名稱,@Parameter註解指定Mojo輸入

@Mojo(name = "hello-goal")
public class MyMojo extends AbstractMojo {

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

    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().warn("Hello Mojo...");
        getLog().warn("param: " + param);
    }
}

3.生成插件

使用mvn clean install生成插件,安裝到本地倉庫

三、運行插件

1.pom文件

<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
    <artifactId>maven-haha</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.example.tools</groupId>
                <artifactId>hello-maven-plugin</artifactId>
                <version>1.0-SNAPSHOT</version>
                <configuration>
                    <param>This is par</param>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2.執行命令

mvn org.example.tools:hello-maven-plugin:1.0-SNAPSHOT:hello-goal

mvn hello:hello-goal

四、綁定 Maven 執行週期

1.pom文件

將插件配置爲將特定目標,從而附加到構建生命週期中的某個特定階段

<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
    <artifactId>maven-haha</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.example.tools</groupId>
                <artifactId>hello-maven-plugin</artifactId>
                <version>1.0-SNAPSHOT</version>
                <configuration>
                    <param>This is par</param>
                </configuration>
                <executions>
                    <execution>
                        <id>hello-id</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>hello-goal</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

2.執行命令

執行mvn clean時,會運行hello-maven-plugin插件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章