内容简介:插件提供者 项目结构这两个依赖是自定义插件必须的依赖,代表了它是一个Mojo工程,里面包含了一些Mojo的接口和抽象类以及注解。注意这里面的
插件提供者 项目结构
├── 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
<packaging>maven-plugin</packaging> 复制代码
1.2. 修改pom
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.5</version>
</dependency>
复制代码
这两个依赖是自定义插件必须的依赖,代表了它是一个Mojo工程,里面包含了一些Mojo的接口和抽象类以及注解。
1.3 coding业务逻辑
@Mojo(name = "fantj",defaultPhase = LifecyclePhase.PACKAGE)
public class MyMojo extends AbstractMojo {
@Parameter
private String msg;
@Parameter
private List<String> 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包,这就是插件包。
2. consume
插件消费者 : 项目结构
├── pom.xml
└── src
└── main
├── java
│ └── com
│ └── fantj
│ └── mypluginuse
└── resources
└── application.properties
复制代码
2.1 修改pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.fantj</groupId>
<artifactId>my-plugin-consume</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>com.fantj</groupId>
<artifactId>my-plugin-provide</artifactId>
<version>0.0.1-SNAPSHOT</version>
<configuration>
<msg>hello plugin</msg>
<list>
<list>one</list>
<list>two</list>
</list>
</configuration>
<!--在执行package时候自动执行自定义插件 将插件挂到 phase 中 -->
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>fantj</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
复制代码
如果不加 <executions> ,我们只能通过执行插件或者执行命令的方式来执行,如果想让它在执行 package 的时候自动执行,就需要设置该属性,可以把它理解成hook。
2.2 如何传递参数给plugin
在插件提供者中,有个 MyMojo 的类,有这样一段代码:
@Parameter
private String msg;
@Parameter
private List<String> list;
复制代码
它和你用过的spring注解一样,也是用来以注解的形式获取参数的值。
相对应的,在插件消费者的配置中我们就应该相应的给出参数的定义:
<configuration>
<msg>hello plugin</msg>
<list>
<list>one</list>
<list>two</list>
</list>
</configuration>
复制代码
上面的配置与变量名一一对应即可。这时候你会发现maven插件中自动会添加一个 plugins 选项:
执行该插件: 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] ------------------------------------------------------------------------ 复制代码
如果你喜欢我的文章,那麻烦请关注我的公众号,公众号重点分析架构师技术,该公众号还处于初始阶段,谢谢大家的支持。
java架构
获取架构视频资源(后期还会分享不同的优质资源噢)。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 自定义插件
- zabbix 日志监控(自定义插件开发)
- 自定义Gradle-Plugin 插件
- 一起入门gradle自定义插件编写(一)
- Mybatis 自定义拦截器与插件开发
- iOS持续集成(三)——fastlane 自定义插件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人人都是产品经理
苏杰 / 电子工业出版社 / 2014-9-1 / CNY 55.00
《人人都是产品经理(纪念版)》为经典畅销书《人人都是产品经理》的内容升级版本。对于大量成长起来的优秀互联网产品经理,为数不少想投身产品工作的其他岗位从业者,以及更多有志从事这一职业的学生而言,这本书曾是他们记忆深刻的启蒙读物、思想基石和行动手册。作者以分享经历与体会为出发点,以“朋友间聊聊如何做产品”的语气,将自己数年产品工作过程中学到的思维方法与做事方式,及其它们对自己的帮助,系统性地梳理为用户......一起来看看 《人人都是产品经理》 这本书的介绍吧!