天天看点

「天天向上」「自动化运维」示例说明如何开发maven自定义插件

作者:花间影清欢

自定义maven插件

  1. 通过模板建立maven插件工程项目
mvn archetype:create 
-DgroupId=com.alibaba.maven.plugins
-DartifactId=greeting-maven-plugin 
-DarchetypeGroupId=org.apache.maven.archetypes 
-DarchetypeArtifactId=maven-archetype-mojo
           
  • groupId=com.alibaba.maven.plugins 和 artifactId=greeting-maven-plugin 来定位插件位置
  • archetypeGroupId=org.apache.maven.archetypes 和 archetypeArtifactId=maven-archetype-mojo 用来定位使用哪个maven的工程模板来建立项目
  1. 复写execute方法(所有的mojo都应该继承自org.apache.maven.plugin.AbstractMojo)
/**  @author wz
*   @goal sayHello   
*/    
public class HelloWorldMojo extends AbstractMojo{   
 @Override       
public void execute() throws MojoExecutionException, MojoFailureException {    
      getLog().info("Hello World!");       
} } 

           
  1. 运行命令mvn install 把该插件先发布到本地库
  2. 运行插件
mvn com.alibaba.maven.plugins:greeting-maven-plugin:1.0-SNAPSHOT:sayHello
# 输出 “Hello World”
           
  1. pom.xml中使用插件
<build>         
 <plugins>             
  <plugin>                 
      <groupId>com.alibaba.maven.plugins</groupId>           
      <artifactId>greeting-maven-plugin</artifactId>           
      <version>1.0-SNAPSHOT</version>         
        <executions>             
         <execution>               
          <phase>initialize</phase>             
            <goals>                 
            <goal>sayHello</goal>              
           </goals>            
         </execution>          
       </executions>        
     </plugin>      
   </plugins>    
</build>  
           
  1. 支持运行时输入参数
/**   
* @author wz
* @goal sayHello   
*/    
public class HelloWorldMojo extends AbstractMojo{       
/**       
* @parameter default-value="WZ" expression="${username}       
*/  
private String userName;      
@Override       
public void execute() throws MojoExecutionException, MojoFailureException {   
        getLog().info("Hello World!"+userName);       
} }  
           
  1. 带参数的pom配置
<build>      
   <plugins>         
    <plugin>          
       <groupId>com.alibaba.maven.plugins</groupId>   
       <artifactId>greeting-maven-plugin</artifactId>          
       <version>1.0-SNAPSHOT</version>  
       <configuration>   
            <userName>wz</userName>  
       </configuration>           
      <executions>             
        <execution>             
            <phase>initialize</phase>              
           <goals>                 
            <goal>sayHello</goal>              
           </goals>            
         </execution>           
      </executions>         
    </plugin>      
   </plugins>    
 </build>            

继续阅读