制作插件
- 修改packaging
<!-- 插件名字tenmao-plugin -->
<artifactId>tenmao-plugin</artifactId>
<!-- maven-plugin打包方式 -->
<packaging>maven-plugin</packaging>
- 引入jar包
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
<scope>provided</scope>
</dependency>
这两个依赖是自定义插件必须的依赖,代表了它是一个Mojo工程,里面包含了一些Mojo的接口和抽象类以及注解。
Mojo 就是 Maven plain Old Java Object。每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单个或多个相关的 Mojo 做统一分发。一个 Mojo 包含一个简单的Java类。插件中多个类似 Mojo 的通用之处可以使用抽象父类来封装。
- 插件Mojo的定义
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
/**
* @author tenmao
*/
@Mojo(name = "mao-goal", defaultPhase = LifecyclePhase.PACKAGE)
public class TenmaoMojo extends AbstractMojo {
/**
* 插件参数:name
*/
@Parameter
private String name;
/**
* 插件参数:age
*/
@Parameter
private Integer age;
public void execute() throws MojoExecutionException {
System.out.printf("hello world, this is %s, age is %d %n", name, age);
}
}
- 发布使用
mvn clean install
使用tenmao-plugin
<plugin>
<groupId>com.tenmao</groupId>
<artifactId>tenmao-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>mao-goal</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 参数配置 -->
<name>tenmao</name>
<age>100</age>
</configuration>
</plugin>
- 使用
mvn clean package -Dmaven.test.skip
# 输出一下内容
[INFO] --- tenmao-plugin:1.0-SNAPSHOT:mao-goal (default) @ maibao ---
hello world, this is tenmao, age is 100
网友评论