`
lvjun106
  • 浏览: 438194 次
  • 性别: 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>
 

 

 

分享到:
评论

相关推荐

    Maven 自定义Zip插件

    这就是自定义插件,如自定义Zip插件发挥作用的地方。 创建自定义Zip插件涉及以下几个关键步骤: 1. **定义Mojo(Maven Goal)**:Mojo是Maven插件的基本执行单元,类似于一个Java方法。你需要定义一个新的Mojo,...

    maven 自定义插件小示例

    本文将深入探讨“Maven自定义插件小示例”,以帮助开发者更好地理解和利用Maven的强大功能。 Maven插件是Maven生态系统中的一个重要组成部分,它们提供了各种各样的功能,如编译、测试、打包、部署等。有时,标准...

    自定义maven插件的实现

    - 在其他Maven项目中通过`&lt;build&gt;&lt;plugins&gt;`或`&lt;reporting&gt;&lt;plugins&gt;`标签引入自定义插件。 举例来说,`sogoucloud-maven-plugin`可能是一个为企业内部服务构建定制的Maven插件,它可能包含了上传代码到公司私有...

    maven打包过程执行自定义插件包

    本篇文章将详细讲解如何在Maven打包过程中执行自定义插件包,以此来满足特定的项目需求。 首先,我们需要了解Maven的生命周期。Maven的生命周期分为三个阶段:clean(清理)、default(构建)和site(站点)。在...

    AndroidStudio自定义Gradle插件

    - `MyExtension`类:作为插件的配置对象,允许用户在`build.gradle`文件中自定义插件的行为。 - `build.gradle`(插件项目):配置插件的GAV信息,以及发布插件到Maven仓库的配置。 - `build.gradle`(应用项目):...

    maven helper idea 插件

    Maven Helper是一款针对IntelliJ IDEA(简称Idea)开发的强大插件,主要用于优化Maven项目管理和构建过程。它提供了多种实用功能,帮助开发者更高效地处理Maven依赖关系,排查冲突,以及更好地理解和操作POM.xml配置...

    Maven自定义plugin

    Maven通过插件系统提供了丰富的功能,而“Maven自定义plugin”则是指开发者根据自身需求定制的Maven插件。这篇文章将深入探讨如何创建和使用自定义的Maven插件。 首先,理解Maven插件的工作原理至关重要。Maven插件...

    Maven3 eclipse 插件

    开发者可以编写自定义插件扩展 Maven 的功能,例如生成文档、进行性能测试等。 **Eclipse Maven 插件(M2E)** 1. **集成开发环境**:M2E 将 Maven 的功能无缝地集成到 Eclipse 中,开发者无需离开 IDE 即可执行 ...

    apache-maven的插件包:apache-maven-3.3.9-bin.zip

    Apache Maven 是一个强大的项目管理和构建工具,广泛应用于...通过使用Maven的插件系统,开发者可以高效地完成各种任务,而无需编写自定义脚本。对于大型项目或团队协作来说,Maven的标准化和自动化特性是极其宝贵的。

    springboot集成generator自定义插件.rar

    3. **自定义注释插件**:在MBG中,我们可以创建一个自定义插件,扩展`ICommentGenerator`接口,覆盖其方法来实现自定义的注释逻辑。例如,添加版权信息、作者信息或者生成特定的Javadoc。 4. **Maven打包**:在...

    自定义maven插件:自动生成API的word文档源代码

    首先,Maven是一个广泛使用的Java项目管理工具,它提供了丰富的插件机制,允许开发者根据项目需求创建自定义插件。在这个场景下,我们创建了一个自定义的Maven插件,它的主要功能是根据用户提供的接口类和参数类信息...

    SpringMVC精品资源--maven之自定义archtype生成自定义项目骨架 1.该项目是一个自定义的arch.zip

    总的来说,通过自定义Maven Archetype,我们可以标准化项目创建过程,提高开发效率,同时确保新项目的结构与团队的编码标准相一致。对于SpringMVC这样的复杂框架,这种自动化初始化可以极大地简化开发者的初期工作,...

    maven3.1、maven3.2安装包、源码及eclipse整合插件

    这对于自定义插件开发或者调试Maven问题时特别有用。你可以通过阅读源码学习到如何使用Apache Maven API和Maven模型来创建自己的构建工具。 3. Eclipse整合Maven: Eclipse作为一款流行的Java IDE,提供了与Maven...

    在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(三)开发和发布自己开发的maven插

    对于开发和发布自定义Maven插件,我们需要遵循Maven插件开发指南。首先创建一个Maven插件项目,包含`pom.xml`文件,指定`maven-plugin`作为打包类型,并声明插件元数据。例如: ```xml &lt;groupId&gt;your.group.id ...

    maven插件for eclipse

    M2E支持插件配置,用户可以方便地添加、配置和执行自定义插件目标。 6. **更新项目配置**:当POM.xml有变化时,M2E会自动检测并更新项目设置,如编译源码路径、类路径等。 7. **集成Eclipse特性**:M2E还与Eclipse...

    maven 代码生成(maven插件)

    例如,你可以创建一个自定义插件来处理特定的数据库字段类型,或者在生成的Java类中添加特定的注解。 7. **最佳实践**: - 为了保持灵活性,推荐将MBG配置文件和生成的代码放在源代码仓库的不同目录下。 - 代码...

    eclipse-maven插件

    本篇文章将详细介绍如何在Eclipse中离线安装Maven插件,并配置自定义的本地仓库路径。 首先,我们需要了解Eclipse Maven插件的重要性。M2Eclipse(Maven Integration for Eclipse)是Eclipse中的一个插件,它允许...

Global site tag (gtag.js) - Google Analytics