原文: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文件,内容:
-
<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:
-
-
<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就是一个供插件调用处理的普通类。
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文件加:
-
<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加:
-
<build>
-
<plugins>
-
<plugin>
-
<artifactId>first-maven-plugin</artifactId>
-
<version>2.3
</version>
-
<configuration>
-
<goalPrefix>first</goalPrefix>
-
</configuration>
-
</plugin>
-
</plugins>
-
</build>
分享到:
相关推荐
在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(三)开发和发布自己开发的maven插件
在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(二)发布自己开发的jar包
此外,课程还包括对Maven核心特性的深入讲解,如依赖管理、构建生命周期、插件使用等,以及如何通过自定义settings.xml文件来优化Maven项目的构建过程。我们的目标是让学员不仅能够安装和配置Maven,还能够灵活运用...
4、插件系统:Maven支持插件机制,你可以自定义插件来扩展Maven的功能。Maven自带了许多常用的插件,如编译、测试、打包插件等。 5、文档生成:Maven可以使用插件来生成项目的文档,如JavaDoc文档、站点文档等。 6...
在Maven2中建议使用自定义的plugin来封装这些内容。 如果仍期望能够使用类似maven.xml的功能,如,请参考Inserting non-standard build steps using preGoals and postGoals。 在Maven2中,配置使用settings.xml,...
当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。 项目管理:依赖管理-项目中需要使用的其他资源,常见的是jar包...
基于Maven插件的全局性重用 1.5. 一个“项目”的概念模型 1.6. Maven是Ant的另一种选择么? 1.7. 比较Maven和Ant 1.8. 总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven ...
在前面几篇博客中我们讲解了简单的自定义插件开发工作,今天我们讲解一下扩展maven-compiler-plugin的processor功能。 一、maven-compiler-plugin 我们知道Maven只是个项目管理工具,如果要编译Java代码是不行的,而...
它提供了一个项目浏览器和执行Maven命令的快捷方式,从而为使用Maven的Java开发人员改善了用户体验。 支持从Maven Archetype生成项目。 支持生成有效的POM。 提供常见目标,插件目标和自定义命令的快捷方式。 ...
Apache Maven 插件,用于检查 java... 特征: 检查属性值中的空格检查空值根据用户定义的正则表达式应用自定义检查有关此插件的更多信息和用法,请访问: : (如果您需要有关 Maven 插件开发的更多一般信息,请查看: )
当前,有关Maven插件/ Maven扩展等的集成测试的基本内容是,现有的解决方案不是基于Apache Maven项目悠久的开发历史而非常简洁和全面的。 一段时间内有很多不同的方法,但是从我的角度来看,它们都缺少一件事:简单...
通过继承PluginAdapter类,开发自定义插件,生成自定义的中文注解的java实体类,dao接口和mapper映射文件
apigee-config-maven-plugin Maven插件,用于创建,管理Apigee配置,如缓存,KVM,目标服务器,资源文件,API产品,开发人员,开发人员应用,流钩子,扩展,掩码配置,自定义角色和API规范。 注意: mvn apigee-...
当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,...
当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,...
在POM中,开发人员可以指定项目的基本信息、依赖库、插件、构建目标等。Maven根据这些信息自动执行构建任务,如编译、测试、打包和部署。 依赖管理: Maven的依赖管理功能能够自动下载、安装和管理项目所需的依赖库...
该插件项目可以直接运用于实际开发中,作为分布式数据库表主键ID使用。 一、项目概述 1、项目背景 在生成表主键ID时,我们可以考虑主键自增 或者 UUID,但它们都有很明显的缺点 主键自增:1、自增ID容易被爬虫遍历...
Flatten Maven插件 生产发布 开发发布 安装 相似的插件 插件功能 取代公开的身份 解决依赖版本范围 根据范围排除依赖项 可选地包括传递依赖 根据xml标签名称删除pom.xml成员 用生成的pom.xml.flatten切换项目pom....