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
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业务逻辑
注意这里面的 import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
1.3. clean and install执行 ![]() 2. consume
2.1 修改pom<?xml version='1.0' encoding='UTF-8'?>
<project xmlns='http://maven./POM/4.0.0' xmlns:xsi='http://www./2001/XMLSchema-instance'
xsi:schemaLocation='http://maven./POM/4.0.0 http://maven./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>
如果不加 2.2 如何传递参数给plugin在插件提供者中,有个
它和你用过的spring注解一样,也是用来以注解的形式获取参数的值。 相对应的,在插件消费者的配置中我们就应该相应的给出参数的定义: <configuration>
<msg>hello plugin</msg>
<list>
<list>one</list>
<list>two</list>
</list>
</configuration>
上面的配置与变量名一一对应即可。这时候你会发现maven插件中自动会添加一个 ![]() 执行该插件:
|
|
来自: liang1234_ > 《maven插件》