maven插件編寫


Maven

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

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

Maven插件的命名規范

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

1、maven-xxxx-plugin為maven官方插件命名,使用這種命名方式可能侵權

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

MoJo

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

創建Mojo工程

1、創建maven工程,選擇類型為mojo

 2、指定groupId、artifactId、版本號

 3、在pom文件中指定打包類型為maven-plugin

 4、添加依賴

 

 5、創建mojo實現類,該實現類繼承自AbstractMojo

 注意這里要通過@Mojo注解指定插件goalPrefix,否則插件無法生成成功

6、mvn clean install生成插件

 

 

 測試自定義插件

1.創建maven工程

 

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

 

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

 

 注意:一定要指定執行階段,否則插件無法正常運行

測試:

 

 

 通過@Parameter注解指定Mojo輸入

1、指定@Parameter注解property

 2、測試項目中添加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及以上

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM