Maven 開發(fā)自定義插件

1. Maven 插件

官方插件命名格式:maven-<xxx>-plugin
非官方插件命名格式:<xxx>-maven-plugin

2. 插件開發(fā)

2.1 創(chuàng)建項(xiàng)目

插件本身也是Maven項(xiàng)目

項(xiàng)目骨架選擇 org.apache.maven.archetypes:maven-archetype-mojo

pom.xml 分析
打包方式設(shè)置為 maven-plugin

<groupId>org.example</groupId>
<artifactId>demo-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>

<packaging>maven-plugin</packaging>

Maven 插件依賴的核心包 maven-plugin-api

<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>
        <scope>provided</scope>
    </dependency>
</dependencies>

MyMojo.java 文件

/**
 * Goal which touches a timestamp file.
 *
 * @goal 指定插件的命名,同注解 @Mojo
 * @phase 綁定插件執(zhí)行的生成周期
 */
@Mojo(name = "myMojo")
public class MyMojo extends AbstractMojo {

    @Parameter(name = "name", defaultValue = "xing")
    private String name;

    /**
     * 插件入口類
     */
    public void execute() throws MojoExecutionException {
        getLog().info("Hello " + name);
    }
}

需要繼承抽象類 AbstractMojo.java

2.2 插件打包

Install 上傳到本地 maven 倉庫

3. 使用自定義插件

3.1 在項(xiàng)目中添加插件

<build>
    <plugins>
        <plugin>
            <groupId>org.example</groupId>
            <artifactId>demo-maven-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
        </plugin>
    </plugins>
</build>

雙擊 dmeo:myMojo 控制臺會輸出:

可配置 Parameter 參數(shù)

<plugin>
    <groupId>org.example</groupId>
    <artifactId>demo-maven-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <configuration>
        <name>World</name>
    </configuration>
</plugin>

此時控制臺打印 [INFO] Hello World

3.2 附到生命周期

在構(gòu)建生命周期的 package 階段,目標(biāo) myMojo自動執(zhí)行

<plugin>
    <groupId>org.example</groupId>
    <artifactId>demo-maven-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>myMojo</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <name>World</name>
    </configuration>
</plugin>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容