美文网首页Spring
maven(从零实现一个自定义插件)

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

作者: 半数的年 | 来源:发表于2019-01-24 10:42 被阅读0次
1、常用插件

具体常用的有以下这些:

  • 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
<!-- 将打包形式改为plugin -->
<packaging>maven-plugin</packaging>
  • b)、引入plugin的依赖包
    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>3.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <version>3.6.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
  • 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 打包,在别的项目引用它
<plugins>
    <plugin>
        <groupId>com.xiaoyuan</groupId>
        <artifactId>yuan-maven-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <configuration>
            <!--配置传给插件的参数-->
            <path>${basedir}</path>
        </configuration>
        <!--挂载在package时运行-->
        <executions>
            <execution>
                <phase>package</phase>
                    <goals>
                        <goal>xiaoyuan</goal>
                    </goals>
           </execution>
        </executions>
    </plugin>
</plugins>
  • e)、别的项目使用时 mvn yuan:findtype -Dproject.directory=${basedir}(必填) -Dtype=properties(选填,默认是java)


    image.png

相关文章

网友评论

    本文标题:maven(从零实现一个自定义插件)

    本文链接:https://www.haomeiwen.com/subject/ymhyjqtx.html