1. Maven 插件
官方插件命名格式:maven-<xxx>-plugin
非官方插件命名格式:<xxx>-maven-plugin
2. 插件開發(fā)
2.1 創(chuàng)建項(xiàng)目
插件本身也是Maven項(xiàng)目
項(xiàng)目骨架選擇 org.apache.maven.archetypes:maven-archetype-mojo


pom.xml 分析
打包方式設(shè)置為 maven-plugin
<groupId>org.example</groupId>
<artifactId>demo-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
Maven 插件依賴的核心包 maven-plugin-api
<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>
<scope>provided</scope>
</dependency>
</dependencies>
MyMojo.java 文件
/**
* Goal which touches a timestamp file.
*
* @goal 指定插件的命名,同注解 @Mojo
* @phase 綁定插件執(zhí)行的生成周期
*/
@Mojo(name = "myMojo")
public class MyMojo extends AbstractMojo {
@Parameter(name = "name", defaultValue = "xing")
private String name;
/**
* 插件入口類
*/
public void execute() throws MojoExecutionException {
getLog().info("Hello " + name);
}
}
需要繼承抽象類 AbstractMojo.java
2.2 插件打包
Install 上傳到本地 maven 倉庫

3. 使用自定義插件
3.1 在項(xiàng)目中添加插件
<build>
<plugins>
<plugin>
<groupId>org.example</groupId>
<artifactId>demo-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
</plugins>
</build>
雙擊 dmeo:myMojo 控制臺會輸出:

可配置 Parameter 參數(shù)
<plugin>
<groupId>org.example</groupId>
<artifactId>demo-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<name>World</name>
</configuration>
</plugin>
此時控制臺打印 [INFO] Hello World
3.2 附到生命周期
在構(gòu)建生命周期的 package 階段,目標(biāo) myMojo自動執(zhí)行
<plugin>
<groupId>org.example</groupId>
<artifactId>demo-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>myMojo</goal>
</goals>
</execution>
</executions>
<configuration>
<name>World</name>
</configuration>
</plugin>