Idea开发maven插件

写点笔记

共 2806字,需浏览 6分钟

 ·

2021-08-19 13:27

今天又是远程上班,早上起来没啥事写一篇博客吧。咋就把这个写文章当干饭一样,写一篇就是一篇。今天我们来学一下maven插件的开发,首先说一下maven有什么用吧,我们知道maven有clean、build、package、install、deploy等过程。也就是说我们做maven插件无非就是想在maven流程中加入自己的一些东西,比如如果项目中用到了checkstyle做代码校验这种场景,除此之外还有maven插件独立运行的情况,比如mybatis逆向生成mapper的时候是独立于maven流程之外的存在,需要我们自己手动去触发。目前作者知道的就这两种插件模式。总结一下就是内嵌于maven的主流程的插件,再或者独立运行的maven插件。这块我们将两者都演示一下。
1.在idea创建maven工程,项目模板选择mojo
项目创建好之后,我们删除自动生成的Mojo类。我们看到生成的mojo类继承了AbstractMojo类。所以说呐,我们开发插件也必然是通过重写Abstractmojo类的方法实现的。我们重新定义mojo类,然后变成这样。
 @goal CustomMavenMojo:表示该插件的服务目标 @phase compile:表示该插件的生效周期阶段 @requiresProject false:表示是否依托于一个项目才能运行该插件 @parameter expression="${name}":表示插件参数,使用插件的时候会用得到 @required:代表该参数不能省略
当然这块的注解还有很多,基本这些就满足日常使用了。
maven install
在我们的目标项目中,我们引入这个插件。
引入插件之后,我们执行一下这里的maven指令。
这块我们的目标就达成了。
但是如果我们想让我们的插件在maven的生命周期内执行怎么做呐?这块我们应该在maven插件中指定插件执行的阶段。
            <plugin>                <groupId>org.example</groupId>                <artifactId>TestMojo</artifactId>                <version>2</version>                <configuration>                    <name>tianjingle</name>                </configuration>                <executions>                    <execution>                       //在install阶段执行                        <phase>install</phase>                        <goals>                             //这块可以添加多个                            <goal>tianjingle</goal>                        </goals>                    </execution>                </executions>            </plugin>
在指定了执行的阶段之后,我们随便指定指定的阶段,发现我们的插件并没有执行哦。
我们再用install来测试一下。
至此我们开头说的maven插件的两个功能已经完成了,因为插件的开发很简单。所以这块也不知道总结个啥了。这个maven插件主要用于对项目进行一些统一的修改。之前说的那两个场景,还有其他的各种插件,比如数据库sql管理的那些插件,这块作者也忘了名字叫啥了。
当然我们这块实现插件使用@注释的方式,其实还有更现代化的方式,也就是去@注释,采用@注解。这块需要引入maven依赖。
    <dependency>      <groupId>org.apache.maven.plugin-tools</groupId>      <artifactId>maven-plugin-annotations</artifactId>      <version>3.2</version>      <scope>provided</scope>    </dependency>    <dependency>      <groupId>org.codehaus.plexus</groupId>      <artifactId>plexus-utils</artifactId>      <version>3.0.8</version></dependency>
相关的代码改造为:
@Mojo(name = "tianjingle")  //相当于@goal注释public class TestMojo extends AbstractMojo {    //相当于@parameter注释    @Parameter(readonly = false,defaultValue = "tianjingle",property = "name")    private String name;
public void execute() throws MojoExecutionException, MojoFailureException { System.out.println("test mojo ....."); System.out.println("---"+name); }}
文章到这里呐,我们就基本会开发maven插件了,大家闲了可以实践一下。


早~


浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报