如何开发一个对自己有用的Maven Plugin

本文介绍了如何开发Maven插件,包括插件命名规范、创建第一个插件、条件约束、外部参数引用及核心注解的详细解析。通过实践案例,帮助开发者掌握Maven Plugin开发技巧。
摘要由CSDN通过智能技术生成

本文部分内容来源于Maven官方网址:https://maven.apache.org/plugin-developers/index.html

1.介绍

Maven实际上是Maven Plugin集合的核心框架,而Plugin是Maven执行实际操作的关键,例如常见的插件:创建Jar文件、创建WAR文件、编译代码、单元测试、创建项目文档等.你可以想象到的对项目执行的所有操作几乎都是Maven Plugin来执行的.

Maven Plugin的实际上是由一个或多个MOJO组成

MOJO来源于POJO(Plain-Old-Java-Object),而M所代表的是Maven的意思

所以Maven插件的Mojo所代表的意思:Maven Plain Old Java Object

所以在Maven Plugin中的核心组成实际上就是一组简单的MOJO

2.第一个Maven插件

既然MOJO是Maven的插件核心实体类,那么我们开发自己的Maven插件只需要创建Maven的POJO就可以了

2.1Maven插件命名规范

以Apache官方团队维护的Maven插件命名风格是maven-<yourplugin>-plugin,通常我们自己开发Maven插件不能使用这种命名,这种命名模式是对Apache Maven商标的侵犯

第三方Maven插件的命名规范:<yourplugin>-maven-plugin

2.2第一个Maven插件

要开发一个Maven插件,首先第一步是新建MOJO实体类,通过继承AbstractMojo类,并重写该类的execute方法,通过注解@Mojo标注这是一个Maven插件,如下代码:

package sample.plugin;
 
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
 
/**
 * Maven Plugin HelloWorld
 *
 */
@Mojo( name = "hello")
public class GreetingMojo extends AbstractMojo
{
   
    public void execute() throws MojoExecutionException
    {
   
        //会在执行该Plugin时,在控制台进行打印输出
        System.out.println("Hello Maven Plugin");
    }
}

2.3Maven插件的条件约束

Maven插件实际上也是一组jar项目,但是项目类型会所有不同,主要区别:

1、按照规定的maven插件命名风格进行命名

2、我们在Maven插件项目中,在pom.xml文件需要将packagin类型设置为maven-plugin

3、需要添加Apache Maven官方提供的插件依赖,例如上面的@Mojo注解就来源于maven-plugin-annotationsjar包

pom.xml示例如下:

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>sample.plugin</groupId>
  <!--重点1.按照规定的maven插件命名风格进行命名-->
  <artifactId>hello-maven-plugin</artifactId>
  <version>1.0-SNAPSHOT</version>
  <!--重点2.需要将packagin类型设置为maven-plugin-->
  <packaging>maven-plugin</packaging>
 
  <name>Sample Parameter-less Maven Plugin</name>
 
  <dependencies>
    <!--重点3.引用Apache Maven提供的Plugin开发所依赖的基础jar包-->
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>3.0</version>
    </dependency>
 
    <!-- dependencies to annotations -->
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.4</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>

2.4使用Maven插件

我们在开发完成Maven插件后,需要执行Maven Install命令,将Maven插件安装在本地Maven仓库中,然后在项目中就可以使用了

2.4.1通过在pom.xml添加使用Plugin组件

我们在项目中的<plugins>节点添加我们开发完成的Maven插件即可使用,如下:

<plugin>
    <groupId>org.example</groupId>
    <artifactId>hello-maven-plugin</artifactId>
    <version>1.0</version>
</plugin>

此时,在项目的命令行,可以通过执行命令mvn hello:hello执行我们的插件

这里的命令所代表的含义:mvn pluginName:mojoName

第一个hello是因为我们的插件是以hello-maven-plugin进行命名的,这也是Maven插件的简写方式

第二个hello是因为@Mojo注解中定义的name名称

@Mojo( name = "hello")
public class GreetingMojo extends AbstractMojo
{
   
    //more...
}

####2.4.2在settings.xml全局文件中添加插件引用

我们可以在${user.home}/.m2/settings.xml配置文件中添加我们的插件groupId,例如:

<pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    -->
    <pluginGroup
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值