前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Idea开发maven插件

Idea开发maven插件

作者头像
写一点笔记
发布2022-08-11 17:06:58
1.6K0
发布2022-08-11 17:06:58
举报
文章被收录于专栏:程序员备忘录程序员备忘录

今天又是远程上班,早上起来没啥事写一篇博客吧。咋就把这个写文章当干饭一样,写一篇就是一篇。今天我们来学一下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类,然后变成这样。

代码语言:javascript
复制
 @goal CustomMavenMojo:表示该插件的服务目标
 @phase compile:表示该插件的生效周期阶段
 @requiresProject false:表示是否依托于一个项目才能运行该插件
 @parameter expression="${name}":表示插件参数,使用插件的时候会用得到
 @required:代表该参数不能省略

当然这块的注解还有很多,基本这些就满足日常使用了。

代码语言:javascript
复制
maven install

在我们的目标项目中,我们引入这个插件。

引入插件之后,我们执行一下这里的maven指令。

这块我们的目标就达成了。

但是如果我们想让我们的插件在maven的生命周期内执行怎么做呐?这块我们应该在maven插件中指定插件执行的阶段。

代码语言:javascript
复制
            <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依赖。

代码语言:javascript
复制
    <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>

相关的代码改造为:

代码语言:javascript
复制
@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插件了,大家闲了可以实践一下。

早~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 写点笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档