maven插件編寫

Mavenjava

maven做爲一個功能豐富的java應用程序管理工具,其提供的插件管理機制爲其擴展帶來了極大的便利;apache

本文以統計指定目錄下有多少個.java爲後綴的文件爲例,說明如何自定義maven插件。編程

Maven插件的命名規範maven

按照官方建議,maven插件的命名建議爲xxxx-maven-plugin,這樣命名有兩個好處ide

一、maven-xxxx-plugin爲maven官方插件命名,使用這種命名方式可能侵權工具

二、自定義插件maven執行命令爲mvn groupId:artifactId:goal,使用推薦命名方式,maven命令能夠簡化爲mvn xxxx:goal測試

MoJospa

Maven plain Old Java Object,插件執行目標,一個插件能夠包含多個Mojo插件

建立Mojo工程3d

一、建立maven工程,選擇類型爲mojo

 二、指定groupId、artifactId、版本號

 三、在pom文件中指定打包類型爲maven-plugin

 四、添加依賴

 

 五、建立mojo實現類,該實現類繼承自AbstractMojo

 注意這裏要經過@Mojo註解指定插件goalPrefix,不然插件沒法生成成功

六、mvn clean install生成插件

 

 測試自定義插件

1.建立maven工程

 

 二、執行mvn bale:filestat,看到正常調用自定義Mojo

 在測試項目中指定executions,經過mvn install命令執行插件

 

 注意:必定要指定執行階段,不然插件沒法正常運行

測試:

 

 經過@Parameter註解指定Mojo輸入

一、指定@Parameter註解property

 二、測試項目中添加configuration

 

 執行結果:

 統計指定目錄下java文件的個數

Mojo源碼:

@Mojo(name = "filestat")
public class FileStatisticMojo extends AbstractMojo {

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

    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        long fileCount = 0;
        File file = new File(path);
        File[] files = file.listFiles();
        if (files != null) {
            fileCount = Arrays.stream(files)
                    .map(File::getName)
                    .filter(fileName -> fileName.endsWith(".java"))
                    .count();
        }

        getLog().warn("Java file count: " + fileCount);
    }
}

執行效果:

 

 這裏遇到了一個問題,在生成插件時,報以下的錯誤:

Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor (default-descriptor) on project bale-maven-plugin: Execution default-descriptor of goal org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor failed: 2164

緣由:

Mojo中使用了java8編程,所以須要在插件pom文件中添加maven-plugin-plugin編譯依賴,並顯式指定版本號爲3.5.2及以上

相關文章
相關標籤/搜索