创建项目
通过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项目时常常会出现jdk版本过低的问题,
默认IDEA设置的jdk版本为jdk1.5,
如果要默认使用java8只需要在pom.xml文件中添加如下的配置:-->
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
</properties>
<!--1.这里packaging设置为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.编写业务逻辑
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规范,写插件必须继承AbstractMojo
*
* 2.声明一下我们的 goal 的name,设置默认Phase为PACKAGE阶段
* Mojo注解定义了我们插件的一些信息,我们可以点进去查看源码去了解
*
* 3.编写执行代码,这里我们打印一句话:hello my first maven plugin.
*
* 4.通过Parameter注解,可以在执行的时候,传参数
* 4.1 传String
* 4.2 传List
* 4.3 传maven的参数 例如: 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.执行 mvn clean install 命令
打包到本地仓库,供本地其他项目使用。
如果别人也用可以打到私服。
4.使用
4.1在别的项目中引入
<plugin>
<groupId>com.yust5273</groupId>
<artifactId>yust5273-plugin</artifactId>
<version>2.0-SNAPSHOT</version>
<!--configuration可以传递入参-->
<configuration>
<!--我们插件中的一个参数名叫做msg-->
<msg>"test input param"</msg>
<!--我们插件中的一个参数名叫做options,他是一个List,
里面的节点名这里我写的是option,经测试其实写什么都行-->
<options>
<option>"one"</option>
<option>"two"</option>
</options>
</configuration>
<executions>
<execution>
<!--把一个插件的运行 绑定到一个package这个phase上去
如果不挂载,则不会在maven的生命周期中运行的-->
<phase>package</phase>
<goals>
<goal>yust5273FirstDemo</goal>
</goals>
</execution>
</executions>
</plugin>