`
lvjun106
  • 浏览: 429797 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖
社区版块
存档分类
最新评论

Maven3 自定义插件开发

 
阅读更多

Why

现有官方插件已经满足不了当前需求,网上也没搜索到满意的插件。

How

1. 编写自定义插件,需要事先安装好Maven的环境。此处省略……

2. 用MAVEN创建一个新的项目

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.1 -DgroupId=com.allen.test -DartifactId=weblogic-maven-plugin -Dpackage=maven-plugin 或者用集成了M2E的Eclipse创建

3. 修改pom.xml

加入maven-plugin的依赖

 

 

<dependency>  
            <groupId>org.apache.maven</groupId>  
            <artifactId>maven-plugin-api</artifactId>  
            <version>3.0.3</version>  
        </dependency>

 

 

4. 编写plugin的执行类

 

 

 

/**
 * @goal info
 * @phase compile
 * @requiresProject false
 */
public class TestPlugin extends AbstractMojo {

	/**
	 * @parameter expression="${str}"
	 * @required
	 */
	private String str;

	/**
	 * @parameter expression="${label}"
	 * @required
	 */

	private String lable;

	/**
	 * 
	 * @parameter
	 */

	private float number;

	/**
	 * 
	 * @parameter
	 */

	private File file;

	/**
	 * 
	 * @parameter
	 */

	private URL url;

	/**
	 * 
	 * @parameter
	 */

	private String[] array;

	/**
	 * 
	 * @parameter
	 */

	private List<String> items;

	/**
	 * 
	 * @parameter
	 */

	private Map<String, String> map;

	/**
	 * 
	 * @parameter
	 */

	private Properties properties;

	/**
	 * 
	 * @parameter
	 */

	private V v;

	public void execute() throws MojoExecutionException, MojoFailureException {
		getLog().info("String is : str = " + str);

		getLog().info("String is : lable = " + lable);

		getLog().info("String is : number = " + number);

		getLog().info("String is : file = " + file);

		getLog().info("String is : url = " + url);

		getLog().info("String is : array = " + Arrays.toString(array));

		getLog().info("String is : items = " + items);

		getLog().info("String is : map = " + map);

		getLog().info("String is : properties = " + properties);

		getLog().info("String is : v = " + v);
	}

}
 

 

执行类需要继承org.apache.maven.plugin.AbstractMojo

实现execute执行方法

注释里面的内容是有意义的,Maven在编译时会获取这些内容,并实现相应的配置

@goal info:表示该插件的服务目标

  @phase compile:表示该插件的生效周期阶段

  @requiresProject false:表示是否依托于一个项目才能运行该插件

    @parameter expression="${name}":表示插件参数,使用插件的时候会用得到

    @required:代表该参数不能省略

 

5. 安装插件

把项目打成jar包, 打开terminal,进入到项目目录(有POM.XML的地方),输入mvn package

之后打包好的jar包会在target目录中

6.部署插件到本地repository

mvn install:install-file -DgroupId=com.allen.test -DartifactId=weblogic-maven-plugin -Dversion=1.0 -Dpackaging=jar -Dfile=${project_dir}/target/${jarFileName}

      把${project_dir}换成你的真实目录

${jarFileName}换成你的jar名字

关键是要让maven找到你的jar

 

7. 测试你的插件

 

在terminal 中输入 

mvn ${groupId}:${artifactId}:${goal} -Dstr=str -Dlabel=label

${groupId},${artifactId} 就是之前插件定义

 

或者在任一项目中引用

 

 

<plugin>
				<groupId>${groupdId}</groupId>
				<artifactId>${artifactId}</artifactId>
				<version>${version}</version>
				<executions>
					<execution>
						<goals>
							<goal>info</goal>
						</goals>
						<phase>compile</phase>
					</execution>
				</executions>
				<configuration>
					<str>fdsaf</str>
					<lable>123</lable>
					<number>3.15</number>
				</configuration>
			</plugin>
 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics