`
iuottp
  • 浏览: 169726 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

编写自定义Maven2插件

阅读更多

from:http://jwu.iteye.com/blog/612944

一、创建一个插件项目
    > 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>  
	<groupId>org.sonatype.mavenbook.plugins</groupId>
	<artifactId>first-maven-plugin</artifactId>
	<packaging>maven-plugin</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>first-maven-plugin Maven Mojo</name>
	<url>http://maven.apache.org</url>
	
	<dependencies>
		<dependency>
			<groupId>org.apache.maven</groupId>
			<artifactId>maven-plugin-api</artifactId>
			<version>2.0</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>


二、创建一个MOJO
   MOJO就是一个供插件调用处理的普通类。
Java代码 复制代码
  1. /**  
  2.  * Echos an object string to the output screen.  
  3.  * @goal echo  
  4.  */  
  5. public class MyMojo extends AbstractMojo {   
  6.     /**  
  7.      * Any Object to print out.  
  8.      * @parameter expression="${echo.message}" default-value="Hello Maven World..."  
  9.      */  
  10.     private Object message;   
  11.   
  12.     public void execute() throws MojoExecutionException {   
  13.         getLog().info(message.toString());   
  14.     }  
/**
 * Echos an object string to the output screen.
 * @goal echo
 */
public class MyMojo extends AbstractMojo {
	/**
	 * Any Object to print out.
	 * @parameter expression="${echo.message}" default-value="Hello Maven World..."
	 */
	private Object message;

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

}

创建了一个MyMojo类,必须继承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="My first Maven plugin"
上面命令中,出来一个echo,这个就是goal,在MyMojo类里用注释定义@goal echo;
可能上面的命令太长,怎样做到像archetype:create一样写法?可以定义前缀;

四、定义前缀
   在setting.xml文件加:
Java代码 复制代码
  1. <pluginGroups>   
  2.   <pluginGroup>org.sonatype.mavenbook.plugins</pluginGroup>   
  3. </pluginGroups>  
  <pluginGroups>
    <pluginGroup>org.sonatype.mavenbook.plugins</pluginGroup>
  </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>  
  <build>
    <plugins>
      <plugin>
        <artifactId>first-maven-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <goalPrefix>first</goalPrefix>
        </configuration>
      </plugin>
    </plugins>
  </build>
分享到:
评论

相关推荐

    自定义maven插件的实现

    然而,有时候Maven的内置插件无法满足特定的需求,这时就需要自定义Maven插件来扩展其功能。本篇文章将深入探讨如何实现自定义的Maven插件。 首先,了解Maven插件的基本结构至关重要。一个Maven插件通常由一组Mojo...

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

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

    Maven 自定义Zip插件

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

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

    至此,你已经成功在Linux环境中搭建了私有Maven仓库,并学会了如何部署自定义JAR依赖和发布自定义Maven插件。这种方式可以帮助团队更高效地管理项目,同时避免了对外部公共仓库的过度依赖。在实际项目中,可以根据...

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

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

    Maven自定义plugin

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

    maven 自定义插件小示例

    本文将深入探讨如何自定义Maven插件,以满足特定的构建需求。通过创建自定义插件,你可以扩展Maven的功能,执行自定义的任务,如代码分析、性能测试或其他特定于项目的操作。 首先,理解Maven插件的基本结构至关...

    AndroidStudio自定义Gradle插件

    - `build.gradle`(插件项目):配置插件的GAV信息,以及发布插件到Maven仓库的配置。 - `build.gradle`(应用项目):应用自定义插件,配置插件的依赖和扩展属性。 六、调试和测试插件 要测试自定义Gradle插件,...

    MavenHelper.zip

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

    maven插件的demo

    在提供的文件`demo-maven-plugin`中,很可能是包含了一个自定义的Maven插件实现,它展示了如何编写和使用自定义插件。自定义插件通常需要实现`Mojo`接口,这个接口是Maven插件目标的基础。`Mojo`代表了Maven的魔法...

    maven插件jar

    4. **自定义插件**:除了默认提供的插件,开发者还可以根据需要添加和配置第三方插件,扩展 Maven 的功能。这使得 Maven 能够处理更复杂的构建需求,如代码覆盖率报告、静态代码分析等。 5. **Eclipse 特性**:...

    maven插件

    Maven插件的源码通常基于Java编写,利用Maven插件API来实现目标功能。通过阅读源码,我们可以更好地了解插件的内部机制,定制插件行为,或者创建自己的插件。 总结,Maven插件是Maven构建系统的核心部分,它们执行...

    myeclips Maven的插件下载

    然而,为了让MyEclipse能够充分利用Maven的功能,我们需要首先安装和配置Maven插件。本文将详细讲解如何在MyEclipse中下载和安装Maven插件。 1. **Maven介绍** Maven是Apache软件基金会的一个开源项目,它提供了一...

    maven 代码生成(maven插件)

    Maven插件则是Maven生态系统中的一个重要组成部分,它们提供了各种功能,例如编译、测试、打包、部署等。在本场景中,我们关注的是"Maven代码生成"插件,特别是"MyBatis Generator"。 MyBatis Generator(MBG)是一...

    eclipse的maven3插件

    Eclipse的Maven3插件,全称为M2E(Maven Integration for Eclipse),是Eclipse集成开发环境(IDE)中的一个强大工具,用于支持Apache Maven项目管理框架。M2E使得开发者能够在Eclipse环境中无缝地管理和构建Maven...

    Custom Maven Plugin

    【Custom Maven Plugin】是关于如何开发自定义Maven插件的主题。Maven是一个广泛使用的Java项目管理和集成工具,它的插件系统允许开发者扩展其功能,以满足特定的构建需求。在本文中,我们将深入探讨创建自定义Maven...

    Apache Maven插件

    3. 配置灵活:Maven插件支持自定义配置,允许开发者针对特定项目需求定制插件的行为。 4. 文档生成:Maven可以生成API文档(如Javadoc)和其他形式的项目文档,方便团队成员之间的交流和理解。 二、Maven插件工作...

Global site tag (gtag.js) - Google Analytics