Mojo: Maven plain Old Java Object 1、插件命名規則:maven-<yourplugin>-plugin是Maven的保留欄位,不允許使用,我們可以用<myplugin>-maven-plugin來命名自己開發的插件。 2、自定義插件代碼,註意pom文件的packag ...
Mojo: Maven plain Old Java Object
1、插件命名規則:maven-<yourplugin>-plugin是Maven的保留欄位,不允許使用,我們可以用<myplugin>-maven-plugin來命名自己開發的插件。
2、自定義插件代碼,註意pom文件的packaging類型是maven-plugin,否則無法識別為插件類型。
1 import org.apache.maven.plugin.AbstractMojo; 2 import org.apache.maven.plugin.MojoExecutionException; 3 import org.apache.maven.plugins.annotations.Mojo; 4 import org.apache.maven.plugins.annotations.Parameter; 5 6 /** 7 * 支持的命令: 8 * mvn com.sample.myplugin:hello-maven-plugin:1.0-SNAPSHOT:sayhi 9 * 預設輸出Hello World! 10 * 當配置了<greeting>Welcome</greeting>,輸出Welcome 11 * mvn com.sample.myplugin:hello-maven-plugin:1.0-SNAPSHOT:sayhi -Dsayhi.greeting=hello 12 * 未配置<greeting>Welcome</greeting>時輸出hello 13 */ 14 @Mojo(name = "sayhi") 15 public class GreetingMojo extends AbstractMojo { 16 17 // 參數,可以用參數表達式${project.version} 18 // 不同的參數類型的pom配置也不同 19 @Parameter(property = "sayhi.greeting", defaultValue = "Hello World!") 20 private String greeting; 21 22 @Override 23 public void execute() throws 24 MojoExecutionException { 25 getLog().info(greeting); 26 } 27 }
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.sample.myplugin</groupId> 8 <artifactId>hello-maven-plugin</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>maven-plugin</packaging> 11 19 <dependencies> 20 <dependency> 21 <groupId>org.apache.maven</groupId> 22 <artifactId>maven-plugin-api</artifactId> 23 <version>3.0</version> 24 </dependency> 25 26 <!-- @Mojo註解的依賴包 --> 27 <dependency> 28 <groupId>org.apache.maven.plugin-tools</groupId> 29 <artifactId>maven-plugin-annotations</artifactId> 30 <version>3.4</version> 31 <scope>provided</scope> 32 </dependency> 33 </dependencies> 34 35 <build> 36 <plugins> 37 <plugin> 38 <!-- 使用自定義插件--> 39 <groupId>com.sample.myplugin</groupId> 40 <artifactId>hello-maven-plugin</artifactId> 41 <version>1.0-SNAPSHOT</version> 42 <configuration> 43 <!-- greeting 是 @Parameter註解的參數--> 44 <greeting>Welcome</greeting> 45 </configuration> 46 </plugin> 47 </plugins> 48 </build> 49 </project>