maven(从零实现一个自定义插件)

1、常用插件
  • 查找需要的插件
    https://maven.apache.org/plugins
    http://www.mojohaus.org/plugins.html

具体常用的有以下这些:

  • findbugs 静态代码检查
  • versions 统一升级版本号
    mvn versions:set -DnewVersion=1.1
  • source 打包源代码
  • tomcat
2、自定义插件

文档
https://maven.apache.org/guides/plugin/guide-java-plugin-development.html

实现自定义扫描项目中java文件个数

  • a)、建立一个maven项目,将packaging改成plugin

maven-plugin
  • b)、引入plugin的依赖包
    
        
            org.apache.maven
            maven-plugin-api
            3.5.0
        
        
            org.apache.maven.plugin-tools
            maven-plugin-annotations
            3.6.0
            provided
        
    
  • c)、创建继承AbstractMojo的类,并重写execute()方法,具体的代码我已上传我的github
@Mojo(name = "findtype", defaultPhase = LifecyclePhase.PACKAGE)
public class ZJYMojo extends AbstractMojo {
    /**
     * 默认读project下src文件下的文件
     */
    @Parameter(property = "project.directory")
    private String path;
    /**
     * 默认判断文件类型是java
     */
    @Parameter(property = "type", defaultValue = "java")
    private String type;
    public void execute() throws MojoExecutionException, MojoFailureException {
        System.out.println("xiaoyuan define plugin " + path);
        // 读取路径下的java文件个数
        // 递归实现
        System.out.println(type + " Files' number in project (Recursive)" + readRecursive(path, ".*?\\."+ type +"$"));
        // 非递归实现
        System.out.println(type + " Files' number in project " + read(path, ".*?\\."+ type +"$"));
    }
    // 递归实现某路径下 存在regex字符串的文件个数
    private int readRecursive(String path, String regex) {}
    // 非递归实现某路径下 存在regex字符串的文件个数
    private int read(String path, String regex) {}
}
  • d)、mvn clean install 打包,在别的项目引用它

    
        com.xiaoyuan
        yuan-maven-plugin
        1.0-SNAPSHOT
        
            
            ${basedir}
        
        
        
            
                package
                    
                        xiaoyuan
                    
           
        
    

  • e)、别的项目使用时 mvn yuan:findtype -Dproject.directory=${basedir}(必填) -Dtype=properties(选填,默认是java)


    image.png

你可能感兴趣的:(maven(从零实现一个自定义插件))