Maven3.x插件编写与使用

       网上有很多Maven插件的编写,我在这里只是对自己做的总结下。
第一步:插件编写:
插件pom.xml文件
<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>comtop.maven</groupId>
	<artifactId>MavenPlugin</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>maven-plugin</packaging>
	<distributionManagement>
		<snapshotRepository>
			<id>shakeMavenRepository</id>
			<url>http://10.10.31.108:8888/nexus/content/repositories/shakeMavenRepository</url>
		</snapshotRepository>
	</distributionManagement>
	<dependencies>
		<dependency>
			<groupId>org.apache.maven</groupId>
			<artifactId>maven-plugin-api</artifactId>
			<version>3.0.5</version>
		</dependency>
	</dependencies>
</project>
 这里需要注意的是Maven插件的 <packaging>必须是 maven-plugin,Maven插件必须依赖 maven-plugin-api。
插件JAVA文件
package com.comtop.maven.plugin;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;

/**
 * 一个Maven插件
 * 
 * @goal info
 * @phase compile
 * @requiresProject false
 */
public class MainMojo extends AbstractMojo {
	/**
	 * @parameter expression="${userName}"
	 * @required
	 */
	private String userName;
	/**
	 * @parameter expression="${userAge}"
	 * @required
	 */
	private int userAge;

	public void execute() throws MojoExecutionException, MojoFailureException {
		getLog().info(this.toString());
	}

	public String toString() {
		return "userName is : " + userName + "userAge is : "
				+ userAge;
	}
}
 Java类需要继承 org.apache.maven.plugin.AbstractMojo,实现execute()方法。需要传递的参数可以通过注释语句引入进来。具体的注释参考 http://maven.apache.org/developers/mojo-api-specification.html
然后将插件部署到nexus仓库中,没搭建nexus的使用mvn install安装插件
第二步:插件使用:
使用插件的pom.xml
<plugin>
	<groupId>comtop.maven</groupId>
	<artifactId>MavenPlugin</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<configuration>
		<userAge>122</userAge>
		<userName>shake</userName>
	</configuration>
	<executions>
		<execution>
			<phase>test</phase>
			<goals>
				<goal>info</goal>
			</goals>
		</execution>
	</executions>
</plugin>
 文件中 groupId、 artifactId、 version都是插件pom中对应的。 configuration里面配置插件类中需要的参数。 executions表示插件的执行时机,这里定义在test阶段执行插件goal为info的插件内容。这样在mvn test时,就能执行到我们的插件execute方法。如果没有搭建nexus仓库。使用
mvn comtop.maven:MavenPlugin:0.0.1-SNAPSHOT:info  -DuserName='shake' -DuserAge=2
 测试插件是否成功。格式为: groupId: artifactId: version:goal -D参数

你可能感兴趣的:(maven)