一、Mojo
Mojo: Maven plain Old Java Object,實際上是一個Maven的目標,插件包含任意數量的目標(Mojos)。
按照官方建議,maven插件的命名建議爲xxxx-maven-plugin
自定義插件maven執行命令爲mvn groupId:artifactId:goal,使用推薦命名方式,maven命令可以簡化爲mvn xxxx:goal
二、創建插件
1.pom文件
指定打包類型爲maven-plugin
<?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>org.example.tools</groupId>
<artifactId>hello-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.5.2</version>
</dependency>
</dependencies>
</project>
2.mojo實現類
@Mojo註解指定目標名稱,@Parameter註解指定Mojo輸入
@Mojo(name = "hello-goal")
public class MyMojo extends AbstractMojo {
@Parameter(property = "param")
private String param;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().warn("Hello Mojo...");
getLog().warn("param: " + param);
}
}
3.生成插件
使用mvn clean install生成插件,安裝到本地倉庫
三、運行插件
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>org.example</groupId>
<artifactId>maven-haha</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.example.tools</groupId>
<artifactId>hello-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<param>This is par</param>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.執行命令
mvn org.example.tools:hello-maven-plugin:1.0-SNAPSHOT:hello-goal
mvn hello:hello-goal
四、綁定 Maven 執行週期
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>org.example</groupId>
<artifactId>maven-haha</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.example.tools</groupId>
<artifactId>hello-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<param>This is par</param>
</configuration>
<executions>
<execution>
<id>hello-id</id>
<phase>clean</phase>
<goals>
<goal>hello-goal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2.執行命令
執行mvn clean時,會運行hello-maven-plugin插件