制作一个简单 的maven plugin

流程

首先, 你需要创建一个Maven项目,推荐用idea 创建项目 会自动配置插件

制作一个简单 的maven plugin_第1张图片

pom.xml文件中添加以下配置:

  
      
    com.example  
    my-maven-plugin  
    1.0.0  
    maven-plugin  
  
      
      
          
            org.apache.maven  
            maven-plugin-api  
            3.9.5  
        
        
          org.apache.maven.plugin-tools
          maven-plugin-annotations
          3.2
          provided
        
    
      
      
          
              
                org.apache.maven.plugins  
                maven-plugin-plugin  
                3.10.2  
                  
                      
                    true
                  
                  
                      
                        mojo-descriptor  
                          
                            descriptor  
                          
                      
                  
              
          
      

老版本的依赖


  4.0.0
  com.example  
  my-maven-plugin
  maven-plugin
  1.0.0
  untitled1 Maven Mojo
  http://maven.apache.org
  
    
    
      org.apache.maven
      maven-plugin-api
      2.0
    
    
      org.apache.maven.plugin-tools
      maven-plugin-annotations
      3.2
      provided
    
    
    
    
      junit
      junit
      3.8.1
      test
    
  

  
  
    
      
        org.apache.maven.plugins
        maven-plugin-plugin
        3.2
        
          
          true
        
        
          
            mojo-descriptor
            
              descriptor
            
          
        
      
    
  


接下来,你需要创建一个实现了Mojo接口的Java类。Mojo是Maven Old Java Object的缩写,代表一个Maven插件的目标(goal)。在这个类中,你可以定义插件的具体行为。以下是一个简单的示例:

package com.example;  
  
import org.apache.maven.plugin.AbstractMojo;  
import org.apache.maven.plugin.MojoExecutionException;  
import org.apache.maven.plugins.annotations.LifecyclePhase;  
import org.apache.maven.plugins.annotations.Mojo;  
import org.apache.maven.plugins.annotations.Parameter;  
  
import java.util.List;  
  
@Mojo(name = "my-goal", defaultPhase = LifecyclePhase.PACKAGE)  
public class MyMojo extends AbstractMojo {  
    @Parameter(property = "message", defaultValue = "Hello, World!")  
    private String message;  
  
    @Parameter(property = "names")  
    private List names;  
  
    @Override  
    public void execute() throws MojoExecutionException {  
        getLog().info(message);  
        for (String name : names) {  
            getLog().info("Name: " + name);  
        }  
    }  
}

在这个示例中,我们创建了一个名为MyMojo的类,并使用@Mojo注解来指定插件的目标名称为my-goal,以及默认的生命周期阶段为PACKAGE。我们还定义了两个参数:message和names,分别使用@Parameter注解进行配置。在execute()方法中,我们简单地打印了这些参数的值。现在,你可以构建并安装你的Maven插件。在命令行中,导航到项目的根目录,并执行以下命令:

mvn clean install

这将编译并打包你的插件,并将其安装到本地Maven仓库中。一旦安装完成,你就可以在其他Maven项目中使用你的插件了。以下是一个使用示例:在另一个Maven项目的pom.xml文件中,添加以下配置:

  
      
      
          
              
                com.example  
                my-maven-plugin  
                1.0.0  
                  
                    Hello from my plugin!  
                      
                        Alice  
                        Bob  
                        Charlie  
                      
                  
                  
                      
                          
                            my-goal   
                          
                      
                  
              
          
      

ideal 运行配置这个插件

制作一个简单 的maven plugin_第2张图片

command line "com.example:my-maven-plugin:1.0.0:my-goal" 命令行太长,我们可以通过 增加 goalPrefix 属性来,修改命令前缀,具体做法如下:

修改原有的 MyMojo

@Mojo(name = "my-goal", defaultPhase = LifecyclePhase.PACKAGE)
public class MyMojo extends AbstractMojo {

    @Parameter(property = "goalPrefix", defaultValue = "my-prefix")
    private String goalPrefix;

    @Parameter(property = "message", defaultValue = "Hello, World!")
    private String message;

    @Parameter(property = "names")
    private List names;

    @Override
    public void execute() throws MojoExecutionException {
        getLog().info(message);
        for (String name : names) {
            getLog().info("Name: " + name);
        }
    }
}

修改 my-maven-plugin 插件pom.xml文件,增加goalPrefix


 
   ...  
  
  
    
      
        org.apache.maven.plugins
        maven-plugin-plugin
        3.10.2
        
          
          true
          my-prefix
        
        
          
            mojo-descriptor
            
              descriptor
            
          
        
      
    
  

重新打包,然后在引用项目中 ,通过ideal 修改如下运行配置:

my-prefix:my-goal

制作一个简单 的maven plugin_第3张图片

对应的maven 命令行

mvn my-prefix:my-goal

你可能感兴趣的:(maven,java)