java開發maven外掛入門
阿新 • • 發佈:2021-06-20
前言
在專案中我們使用到了大量的官方的maven外掛,如clean,compiler,今天我們自己開發一個外掛來更好的理解外掛的原理。
建立maven外掛專案
官方外掛命名的格式為 maven-xxx-plugin,非官方的外掛命名為 xxx-maven-plugin
修改pom檔案
<packaging>maven-plugin</packaging>
預設的打包型別為jar
<dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>3.5.0</version> </dependency> <!-- dependencies to Java 5 annotations --> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>3.5</version> <scope>provided</scope> </dependency> </dependencies>
新增上述依賴
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>3.6.0</version> </plugin> </plugins> </build>
新增外掛依賴,預設的plugin外掛版本為3.2,不支援註解
開發外掛
import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; @Mojo(name = "first") public class MyFirstMojo extends AbstractMojo { @Parameter(name = "name", defaultValue = "lisi") private String name; @Parameter(name = "address", property = "address", defaultValue = "上海") private String address; public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("this is a test plugin," + name + " " + address); } }
定義一個類繼承AbstractMojo ,使用註解Mojo修飾,表示這是一個Mojo,每個Mojo實現一個goal,一個外掛就是由一系列Mojo構成的。
註解Parameter用來定義引數,property 表示可以從專案屬性中取值。外掛專案install之後,本地其他專案就可以使用了。
使用外掛
<plugin>
<groupId>com.imooc</groupId>
<artifactId>maven-plugin-first</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<name>lisi2</name>
</configuration>
</plugin>
點選之後會輸出
我們也可以繫結到指定的生命週期階段執行
<plugin>
<groupId>com.imooc</groupId>
<artifactId>maven-plugin-first</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>first</goal>
</goals>
</execution>
</executions>
<configuration>
<name>lisi2</name>
</configuration>
</plugin>
</plugins>
在編譯時自動執行