`

开发自定义Maven2插件

阅读更多

原文:http://tianya23.blog.51cto.com/1081650/364121

一、创建一个插件项目 

    > mvn archetype:create -DgroupId=org.sonatype.mavenbook.plugins -DartifactId=first-maven-plugin -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-mojo 

    maven会自动到远程库去下载maven-archetype-mojo的插件; 
    创建成功会生成一个first-maven-plugin的文件夹,里有一个pom.xml文件,内容: 
Java代码 
  1. <groupId>org.sonatype.mavenbook.plugins</groupId>  
  2. <artifactId>first-maven-plugin</artifactId>  
  3. <packaging>maven-plugin</packaging>  
  4. <version>1.0 -SNAPSHOT</version>  
  5. <name>first-maven-plugin Maven Mojo</name>  
  6. <url>http://maven.apache.org</url>   
  7.   
  8. <dependencies>  
  9.     <dependency>  
  10.         <groupId>org.apache.maven</groupId>  
  11.         <artifactId>maven-plugin-api</artifactId>  
  12.         <version>2.0 </version>  
  13.     </dependency>  
  14.     <dependency>  
  15.         <groupId>junit</groupId>  
  16.         <artifactId>junit</artifactId>  
  17.         <version>3.8 . 1 </version>  
  18.         <scope>test</scope>  
  19.     </dependency>  
  20. </dependencies>  

二、创建一个MOJO 

   MOJO就是一个供插件调用处理的普通类。 
package org.sonatype.mavenbook.plugins;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;

/**
* Echos an object string to the output screen.
*
* @goal echo
*/

public class EchoMojo extends AbstractMojo {
  /**
    * Any Object to print out.
    *
    * @parameter expression="${echo.message}"
    *                        default-value="Hello Maven World..."
    */

  private Object message;

  public void execute() throws MojoExecutionException, MojoFailureException {
    getLog().info(message.toString());
  }
}

创建了一个EchoMojo 类,必须继承AbstractMojo类,实现execute方法,这个方法就是插件调用的入口; 

三、build, run自定义插件 

   > mvn clean install 
   插件运行遵循groupId:artifactId:version:goal格式; 
   > mvn org.sonatype.mavenbook.plugins:first-maven-plugin:1.0-SNAPSHOT:echo -Decho.message="The Eagle has Landed"  
D:\code\first-maven-plugin>mvn org.sonatype.mavenbook.plugins:first-maven-plugin:1.0-SNAPSHOT:echo -Decho.message="The Eagle has Landed"
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building first-maven-plugin Maven Mojo
[INFO]        task-segment: [org.sonatype.mavenbook.plugins:first-maven-plugin:1.0-SNAPSHOT:echo]
[INFO] ------------------------------------------------------------------------
[INFO] [first:echo {execution: default-cli}]
[INFO] The Eagle has Landed
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Sat Jul 31 14:26:50 CST 2010
[INFO] Final Memory: 1M/4M
[INFO] ------------------------------------------------------------------------

上面命令中,出来一个echo,这个就是goal,在EchoMojo 类里用注释定义@goal echo; 可能上面的命令太长,怎样做到像archetype:create一样写法?可以定义前缀; 

四、定义前缀 
   在setting.xml文件加: 
Java代码 
  1. <pluginGroups>  
  2.   <pluginGroup>org.sonatype.mavenbook.plugins</pluginGroup>  
  3. </pluginGroups>  

然后: 
    > mvn first:echo -Decho.message="My first Maven plugin" 
非常简单。 
如果插件的artifactId遵循maven-first-plugin,或者first-maven-plugin模式。Maven就会自动为你的插件赋予前缀first。 
${prefix}-maven-plugin, OR maven-${prefix}-plugin 
也可自定义前缀,在pom.xml加: 
Java代码 
  1. <build>  
  2.   <plugins>  
  3.     <plugin>  
  4.       <artifactId>first-maven-plugin</artifactId>  
  5.       <version>2.3 </version>  
  6.       <configuration>  
  7.         <goalPrefix>first</goalPrefix>  
  8.       </configuration>  
  9.     </plugin>  
  10.   </plugins>  
  11. </build>  

分享至
分享到:
评论

相关推荐

    自定义maven插件的实现

    总的来说,自定义Maven插件是提升开发效率、实现个性化需求的重要手段。开发者需要理解Maven的生命周期和插件机制,才能灵活地设计和实现自定义插件。同时,良好的文档和测试也是确保插件质量的关键。

    maven 自定义插件小示例

    Maven插件是Maven生态系统中的一个重要组成部分,它们提供了各种各样的功能,如编译、测试、打包、部署等。有时,标准插件无法满足特定项目的需求,这时候就需要创建自定义插件来扩展Maven的功能。 1. **理解Maven...

    自定义maven插件:自动生成API的word文档源代码

    使用自定义Maven插件生成API文档有以下几个显著优点: - **自动化**:减少了手动编写文档的时间,提高了开发效率。 - **一致性**:通过模板保证了文档的格式统一,提升了专业度。 - **易维护**:当接口或参数发生...

    在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(三)开发和发布自己开发的maven插

    对于开发和发布自定义Maven插件,我们需要遵循Maven插件开发指南。首先创建一个Maven插件项目,包含`pom.xml`文件,指定`maven-plugin`作为打包类型,并声明插件元数据。例如: ```xml &lt;groupId&gt;your.group.id ...

    Maven 自定义Zip插件

    总之,“Maven自定义Zip插件”是Maven插件体系中的一个重要概念,它让开发者能够灵活地处理项目打包过程,满足项目特定的需求。通过理解和实践这一技术,开发者可以更好地掌握Maven的高级用法,提升项目构建的效率和...

    在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(二)发布自己开发的jar包

    5. **发布自定义maven插件** - 对于maven插件,创建一个新的Repository类型为Plugin Group,因为Maven插件的存储位置与普通jar包不同。 - 配置插件的pom.xml,确保`groupId`、`artifactId`、`version`和`packaging...

    apache-maven的插件包:apache-maven-3.3.9-bin.zip

    Apache Maven 是一个强大的项目管理和构建工具,广泛应用于...通过使用Maven的插件系统,开发者可以高效地完成各种任务,而无需编写自定义脚本。对于大型项目或团队协作来说,Maven的标准化和自动化特性是极其宝贵的。

    Maven自定义plugin

    通过自定义Maven插件,你可以扩展Maven的功能,使其适应项目的特殊需求。这不仅提高了开发效率,还能确保项目构建的一致性和可重复性。然而,要注意的是,过度依赖自定义插件可能会增加项目的复杂性,因此在决定是否...

    eclipse-maven插件

    本篇文章将详细介绍如何在Eclipse中离线安装Maven插件,并配置自定义的本地仓库路径。 首先,我们需要了解Eclipse Maven插件的重要性。M2Eclipse(Maven Integration for Eclipse)是Eclipse中的一个插件,它允许...

    AndroidStudio自定义Gradle插件

    要测试自定义Gradle插件,可以使用`./gradlew tasks`命令来运行插件的任务,或者通过`apply false`来防止插件在开发阶段自动应用,便于单独测试插件的代码。 总结,自定义Gradle插件是Android Studio项目构建过程中...

    eclipse怎么安装maven开发插件

    ### Eclipse 安装 Maven 开发插件详尽指南 #### 一、下载并配置 Maven 环境 在开始安装 Eclipse 的 Maven 插件之前,首先需要确保已经正确安装了 Maven 环境。这里提到的步骤是针对 Apache Maven 3.1.1 版本的,但...

    MavenHelper.zip

    5. **集成到IDEA工作流**:MavenHelper插件无缝集成到IDEA的开发环境中,使得开发者在编写代码的同时就能方便地进行依赖管理,无需离开IDEA进行额外操作。 6. **实时更新提示**:当有新的依赖版本发布或现有依赖...

    eclipse安装的maven插件

    通过Maven插件,Eclipse用户可以直接在IDE内部创建、编译、测试、打包和部署Maven项目,极大地提高了开发效率。 安装Maven插件的过程通常分为以下几步: 1. **下载Maven**:首先,你需要从Apache官方网站...

    eclipse安装maven插件

    Eclipse作为流行的Java集成开发环境(IDE),通过安装Maven插件,可以让开发者在Eclipse内部方便地进行Maven项目的开发和管理。下面我们将详细介绍如何在Eclipse中安装Maven插件。 首先,我们需要知道为什么要在...

    Maven常用插件整理.docx

    在Java开发领域,Maven是广泛使用的构建工具,它...综上所述,Maven的插件系统极大地增强了其灵活性和实用性,使得开发者能够根据项目需求自定义构建过程。正确配置和使用这些插件,能够确保项目构建高效且符合预期。

    maven helper插件

    7. **运行/调试配置**:插件还支持自定义运行和调试配置,允许开发者针对特定的Maven目标执行或调试,提高了工作效率。 8. **兼容性与集成**:maven helper插件无缝集成于IntelliJ IDEA,无需额外安装,且兼容各种...

Global site tag (gtag.js) - Google Analytics