Why
现有官方插件已经满足不了当前需求,网上也没搜索到满意的插件。
How
1. 编写自定义插件,需要事先安装好Maven的环境。此处省略……
2. 用MAVEN创建一个新的项目
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.1 -DgroupId=com.allen.test -DartifactId=weblogic-maven-plugin -Dpackage=maven-plugin 或者用集成了M2E的Eclipse创建
3. 修改pom.xml
加入maven-plugin的依赖
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.0.3</version>
</dependency>
4. 编写plugin的执行类
/**
* @goal info
* @phase compile
* @requiresProject false
*/
public class TestPlugin extends AbstractMojo {
/**
* @parameter expression="${str}"
* @required
*/
private String str;
/**
* @parameter expression="${label}"
* @required
*/
private String lable;
/**
*
* @parameter
*/
private float number;
/**
*
* @parameter
*/
private File file;
/**
*
* @parameter
*/
private URL url;
/**
*
* @parameter
*/
private String[] array;
/**
*
* @parameter
*/
private List<String> items;
/**
*
* @parameter
*/
private Map<String, String> map;
/**
*
* @parameter
*/
private Properties properties;
/**
*
* @parameter
*/
private V v;
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("String is : str = " + str);
getLog().info("String is : lable = " + lable);
getLog().info("String is : number = " + number);
getLog().info("String is : file = " + file);
getLog().info("String is : url = " + url);
getLog().info("String is : array = " + Arrays.toString(array));
getLog().info("String is : items = " + items);
getLog().info("String is : map = " + map);
getLog().info("String is : properties = " + properties);
getLog().info("String is : v = " + v);
}
}
执行类需要继承org.apache.maven.plugin.AbstractMojo
实现execute执行方法
注释里面的内容是有意义的,Maven在编译时会获取这些内容,并实现相应的配置
@goal info:表示该插件的服务目标
@phase compile:表示该插件的生效周期阶段
@requiresProject false:表示是否依托于一个项目才能运行该插件
@parameter expression="${name}":表示插件参数,使用插件的时候会用得到
@required:代表该参数不能省略
5. 安装插件
把项目打成jar包, 打开terminal,进入到项目目录(有POM.XML的地方),输入mvn package
之后打包好的jar包会在target目录中
6.部署插件到本地repository
mvn install:install-file -DgroupId=com.allen.test -DartifactId=weblogic-maven-plugin -Dversion=1.0 -Dpackaging=jar -Dfile=${project_dir}/target/${jarFileName}
把${project_dir}换成你的真实目录
${jarFileName}换成你的jar名字
关键是要让maven找到你的jar
7. 测试你的插件
在terminal 中输入
mvn ${groupId}:${artifactId}:${goal} -Dstr=str -Dlabel=label
${groupId},${artifactId} 就是之前插件定义
或者在任一项目中引用
<plugin>
<groupId>${groupdId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<executions>
<execution>
<goals>
<goal>info</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
<configuration>
<str>fdsaf</str>
<lable>123</lable>
<number>3.15</number>
</configuration>
</plugin>
分享到:
相关推荐
在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(三)开发和发布自己开发的maven插件
在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(二)发布自己开发的jar包
4、插件系统:Maven支持插件机制,你可以自定义插件来扩展Maven的功能。Maven自带了许多常用的插件,如编译、测试、打包插件等。 5、文档生成:Maven可以使用插件来生成项目的文档,如JavaDoc文档、站点文档等。 6...
maven安装与配置 《快速上手Maven:2-3年技术人员的实战指南》是一门专为具有2-3年工作经验的技术专业人士设计的实用课程。本课程旨在帮助学员深入...熟练运用Maven进行项目构建、依赖管理和插件开发。 优化和定制Ma
在前面几篇博客中我们讲解了简单的自定义插件开发工作,今天我们讲解一下扩展maven-compiler-plugin的processor功能。 一、maven-compiler-plugin 我们知道Maven只是个项目管理工具,如果要编译Java代码是不行的,而...
它提供了一个项目浏览器和执行Maven命令的快捷方式,从而为使用Maven的Java开发人员改善了用户体验。 支持从Maven Archetype生成项目。 支持生成有效的POM。 提供常见目标,插件目标和自定义命令的快捷方式。 ...
当你使用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 ...
apigee-config-maven-plugin Maven插件,用于创建,管理Apigee配置,如缓存,KVM,目标服务器,资源文件,API产品,开发人员,开发人员应用,流钩子,扩展,掩码配置,自定义角色和API规范。 注意: mvn apigee-...
在Maven2中建议使用自定义的plugin来封装这些内容。 如果仍期望能够使用类似maven.xml的功能,如,请参考Inserting non-standard build steps using preGoals and postGoals。 在Maven2中,配置使用settings.xml,...
通过继承PluginAdapter类,开发自定义插件,生成自定义的中文注解的java实体类,dao接口和mapper映射文件
这是一个实现 ImageJ 1.x 插件的最小 Maven 项目 它旨在作为在您选择的 IDE 中开发新 ImageJ 1.x 插件的理想起点。 您甚至可以与使用与您不同的 IDE 的开发人员协作。 例如,在,它就像File>Import...>Existing ...
Apache Maven 插件,用于检查 java... 特征: 检查属性值中的空格检查空值根据用户定义的正则表达式应用自定义检查有关此插件的更多信息和用法,请访问: : (如果您需要有关 Maven 插件开发的更多一般信息,请查看: )
当前,有关Maven插件/ Maven扩展等的集成测试的基本内容是,现有的解决方案不是基于Apache Maven项目悠久的开发历史而非常简洁和全面的。 一段时间内有很多不同的方法,但是从我的角度来看,它们都缺少一件事:简单...
在POM中,开发人员可以指定项目的基本信息、依赖库、插件、构建目标等。Maven根据这些信息自动执行构建任务,如编译、测试、打包和部署。 依赖管理: Maven的依赖管理功能能够自动下载、安装和管理项目所需的依赖库...
Mybatis自定义插件生成雪花ID做为主键项目 有关Mybatis雪花ID主键插件前面写了两篇博客作为该项目落地的铺垫。 1、 2、 该插件项目可以直接运用于实际开发中,作为分布式数据库表主键ID使用。 一、项目概述 1、项目...
Flatten Maven插件 生产发布 开发发布 安装 相似的插件 插件功能 取代公开的身份 解决依赖版本范围 根据范围排除依赖项 可选地包括传递依赖 根据xml标签名称删除pom.xml成员 用生成的pom.xml.flatten切换项目pom....
当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,...