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

1. provide

插件提供者 项目结构

├── pom.xml

├── src

│ └── main

│ ├── java

│ │ └── com

│ │ └── fantj

│ │ └── mypluginprovide

│ │ └── MyMojo.java

│ └── resources

│ └── application.properties

└── target

└── my-plugin-provide-0.0.1-SNAPSHOT.jar

1.1 修改packaging

maven-plugin

1.2. 修改pom

org.apache.maven

maven-plugin-api

3.5.0

org.apache.maven.plugin-tools

maven-plugin-annotations

3.5

这两个依赖是自定义插件必须的依赖,代表了它是一个Mojo工程,里面包含了一些Mojo的接口和抽象类以及注解。

1.3 coding业务逻辑

@Mojo(name = 'fantj',defaultPhase = LifecyclePhase.PACKAGE)

public class MyMojo extends AbstractMojo{

@Parameter

private String msg;

@Parameter

private List list;

public void execute() throws MojoExecutionException, MojoFailureException{

System.out.println('hello plugin: ' msg 'list: ' list);

}

}

注意这里面的@Parameter``@Mojo`` LifecyclePhase.PACKAGE都是org.apache.maven.plugins.annotations包下的:

import org.apache.maven.plugins.annotations.LifecyclePhase;

import org.apache.maven.plugins.annotations.Mojo;

import org.apache.maven.plugins.annotations.Parameter;

@Parameter注解会获取消费者配置文件中的变量值并赋值。

defaultPhase = LifecyclePhase.PACKAGE声明了该插件触发的生命周期。

@Mojo定义插件的goal名字。

1.3. clean and install

执行mvn clean install,在target目录下会生成这样一个jar包,这就是插件包。

172790671_1_20191009043532610.png

2. consume

插件消费者 : 项目结构

├── pom.xml

└── src

└── main

├── java

│ └── com

│ └── fantj

│ └── mypluginuse

└── resources

└── application.properties

2.1 修改pom

xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'>

4.0.0

com.fantj

my-plugin-consume

0.0.1-SNAPSHOT

com.fantj

my-plugin-provide

0.0.1-SNAPSHOT

hello plugin

one

two

package

fantj

如果不加,我们只能通过执行插件或者执行命令的方式来执行,如果想让它在执行package的时候自动执行,就需要设置该属性,可以把它理解成hook。

2.2 如何传递参数给plugin

在插件提供者中,有个MyMojo的类,有这样一段代码:

@Parameter

private String msg;

@Parameter

private List list;

它和你用过的spring注解一样,也是用来以注解的形式获取参数的值。

相对应的,在插件消费者的配置中我们就应该相应的给出参数的定义:

hello plugin

one

two

上面的配置与变量名一一对应即可。这时候你会发现maven插件中自动会添加一个plugins选项:

172790671_2_20191009043532814.png

执行该插件:mvn myprovide:fantj 或者直接点击

[fantj@lalala my-plugin-consume]$ mvn myprovide:fantj

[INFO] Scanning for projects...

[INFO]

[INFO] --------------------< com.fantj:my-plugin-consume >---------------------

[INFO] Building my-plugin-consume 0.0.1-SNAPSHOT

[INFO] --------------------------------[ jar ]---------------------------------

[INFO]

[INFO] --- my-plugin-provide:0.0.1-SNAPSHOT:fantj (default-cli) @ my-plugin-consume ---

hello plugin: hello pluginlist: [one, two]

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 0.347 s

[INFO] Finished at: 2018-11-01T19:59:04 08:00

[INFO] ------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值