創(chuàng)建項(xiàng)目
通過IDEA操作:
New Project ->Maven
->Next
->GroupId、ArtifactId、Version
->Next
->ProjectName
->Finish
基本配置
1.pom.xml配置
<?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>com.yust5273</groupId>
<artifactId>yust5273-plugin</artifactId>
<version>2.0-SNAPSHOT</version>
<!--使用Intellij IDEA打開maven項(xiàng)目時(shí)常常會(huì)出現(xiàn)jdk版本過低的問題光羞,
默認(rèn)IDEA設(shè)置的jdk版本為jdk1.5,
如果要默認(rèn)使用java8只需要在pom.xml文件中添加如下的配置:-->
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<!--1.這里packaging設(shè)置為maven-plugin-->
<packaging>maven-plugin</packaging>
<dependencies>
<!--2.編寫maven插件所需要的依賴 maven-plugin-api-->
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.5.0</version>
</dependency>
<!--2.編寫maven插件所需要的依賴 maven-plugin-annotations-->
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
2.編寫業(yè)務(wù)邏輯
package com.yust5273;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import java.util.List;
/**
* 1.extends AbstractMojo
* maven規(guī)范怀大,寫插件必須繼承AbstractMojo
*
* 2.聲明一下我們的 goal 的name,設(shè)置默認(rèn)Phase為PACKAGE階段
* Mojo注解定義了我們插件的一些信息纱兑,我們可以點(diǎn)進(jìn)去查看源碼去了解
*
* 3.編寫執(zhí)行代碼,這里我們打印一句話:hello my first maven plugin.
*
* 4.通過Parameter注解化借,可以在執(zhí)行的時(shí)候潜慎,傳參數(shù)
* 4.1 傳String
* 4.2 傳List
* 4.3 傳maven的參數(shù) 例如: mvn install -Dargs=123
*/
@Mojo(name = "yust5273FirstDemo",defaultPhase = LifecyclePhase.PACKAGE)
public class Yust5273MoJo extends AbstractMojo {
@Parameter
private String msg;
@Parameter
private List<String> options;
@Parameter(property = "args")
private String args;
public void execute() throws MojoExecutionException, MojoFailureException {
System.out.println("hello my first maven plugin."+msg);
System.out.println("hello my first maven plugin."+options);
System.out.println("hello my first maven plugin."+args);
}
}
3.執(zhí)行 mvn clean install 命令
打包到本地倉庫,供本地其他項(xiàng)目使用屏鳍。
如果別人也用可以打到私服勘纯。
4.使用
4.1在別的項(xiàng)目中引入
<plugin>
<groupId>com.yust5273</groupId>
<artifactId>yust5273-plugin</artifactId>
<version>2.0-SNAPSHOT</version>
<!--configuration可以傳遞入?yún)?->
<configuration>
<!--我們插件中的一個(gè)參數(shù)名叫做msg-->
<msg>"test input param"</msg>
<!--我們插件中的一個(gè)參數(shù)名叫做options,他是一個(gè)List,
里面的節(jié)點(diǎn)名這里我寫的是option,經(jīng)測(cè)試其實(shí)寫什么都行-->
<options>
<option>"one"</option>
<option>"two"</option>
</options>
</configuration>
<executions>
<execution>
<!--把一個(gè)插件的運(yùn)行 綁定到一個(gè)package這個(gè)phase上去
如果不掛載钓瞭,則不會(huì)在maven的生命周期中運(yùn)行的-->
<phase>package</phase>
<goals>
<goal>yust5273FirstDemo</goal>
</goals>
</execution>
</executions>
</plugin>