java自定义maven插件_Maven 自定义Maven插件

1.介绍

我们经常在写pom的时候,会在build的几点里面配有各式各样的plugin,这些plugin就是maven的插件,他们通常叫做Mojo,这些插件的作用就是在构建项目的过程中,执行一些动作,行为,例如使用maven-jar-plugin的插件,就是用于打包jar。又例如,我们在使用spring boot的时候,为什么执行mvn spring-boot:run的时候,maven会做一些spring-boot的构建方式,是因为我们在build里面配有了spring-boot-maven-plugin的插件,并且执行了run的类。下面我们就来自定义一个mojo。

2. 插件命名规则

在我们开始创建一个自定义插件之前,我们先来看看命名规则,其实起什么名字都可以,官方建议使用xxx-maven-plugin,请看下面例子

但是这里有一点,当们需要执行一个命令的时候,我们必须是这么写:组名:模块名:版本号:运行名称

d42b52744d728618c213ddc7bbaec444.png

这样写没问题,只是有点繁琐,但是如果我们的插件结尾为-maven-plugin那么我们就可以使用简化写法,并且达到相同效果: [模块名去掉-maven-plugin]:运行名称

666c051f2001cdd29f4840f458293936.png

3.开始写自定义组件

可以通过各类IDE,如果eclipse,或者idea都可以,创建一个maven的项目,在选择模块的时候,可以选择mojo的模块,IDE就会很快的帮你建立出mojo的开发环境,在开发的pom里面就是一个最简单的pom结构,但是如果要开发mojo,我们还需要引入两个插件,一个是maven-plugin-api,一个是maven-plugin-annotations,用上这两个插件,我们才能编写属于我们的自定义插件

4.0.0

com.test.maven

my-maven-plugin

maven-plugin

1.0-SNAPSHOT

my-maven-plugin Maven Mojo

http://maven.apache.org

org.apache.maven

maven-plugin-api

2.0

org.apache.maven.plugin-tools

maven-plugin-annotations

3.1

下面是一个java执行类,就是我们要执行的一写操作,这里需要继承AbstractMojo类,和重写execute方法,里面就是具体我们要实行的的逻辑,这里关键点是注解,我们后面详细说明

packagecom.test.maven;importorg.apache.maven.plugin.AbstractMojo;importorg.apache.maven.plugin.MojoExecutionException;importorg.apache.maven.plugins.annotations.Execute;importorg.apache.maven.plugins.annotations.LifecyclePhase;importorg.apache.maven.plugins.annotations.Mojo;importorg.apache.maven.plugins.annotations.Parameter;/*** Goal which touches a timestamp file.

*

* @goal touch

*

* @phase process-sources*/@Mojo(name="hello",defaultPhase =LifecyclePhase.CLEAN)public class MyMojo extendsAbstractMojo

{

@ParameterprivateString test;public void execute() throwsMojoExecutionException {

System.out.println(" ---------->> Hello My Plugins = " +test);

}

}

写完这两个东西之后,我们就可以把这个插件,安装到库里面,执行 mvn install。这样我们其他的项目就可以使用这个插件来对我们的项目进行一个些自定义的操作了

其他项目的pom,在其他项目引用这个插件就像平常一样,在build里面写上插件的信息

4.0.0

com.test.maven.phase

my-maven-test-phase

0.0.1-SNAPSHOT

com.test.maven

my-maven-plugin

1.0-SNAPSHOT

然后运行,这里的hello对应的就是上面我们自定义组件中@Mojo里面的name属性:    mvn my:hello

4. 自定义组件的属性说明

下面找几个例子来说明,分两个文件,一个是组件里面的注解,一个是项目里面pom的配置写法

例子1:

//组件组件

@Mojo(name="hello")

com.test.maven

my-maven-plugin

1.0-SNAPSHOT

hello

clean

peter

例子2:

//自定义组件,名称为hello, 默认执行周期 clean,

@Mojo(name="hello",defaultPhase = LifecyclePhase.CLEAN)

com.test.maven

my-maven-plugin

1.0-SNAPSHOT

hello

例子3:

//声明参数,用于pom注入参数

@Parameterprivate String test;

com.test.maven

my-maven-plugin

1.0-SNAPSHOT

hello

peter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值