`
suhuanzheng7784877
  • 浏览: 702387 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47704
社区版块
存档分类
最新评论

Maven3实战笔记15编写Maven插件

阅读更多

1.  自定义插件介绍

在一些情况下,Maven现有的一些插件可能满足不了我们的一些“特殊服务”。这个时候有三种选择,第一,问问有经验的Maven开发者,是否有相应的。第二,从网上找找搜搜,看看有没有别的组织开发的Maven插件可以使用。第三,以上两条路都没走通,看来只能自己开发Maven的插件了,谁让咱们的需求比较“特殊”呢!“特殊服务”就得付出点代价不是~对于插件,大家可能接触最深的就是IDE插件了,像Eclipse这种IDE就开创了插件时代,后来的NetBeansIntelliJ都是内核比较少,插件加在一起显得比较重量级。

2.  编写简单Maven插件

编写一个Maven插件其实不难,关键是编写优秀的Maven插件确实不容易。相对于Eclipse Plugin开发来说,Maven插件开发显得简单又清晰。只需要注意两点就可以开发出一个简单的插件,第一,编写插件pom.xml文件;第二,编写真正做事情的插件Java类。

咱先看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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.liuyan.account</groupId>
	<artifactId>MavenAccount-Plugin</artifactId>
	<version>1.0</version>
	<packaging>maven-plugin</packaging>
	<name>MavenAccount-Plugin</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.maven</groupId>
			<artifactId>maven-plugin-api</artifactId>
			<version>3.0.3</version>
		</dependency>
	</dependencies>
</project>
 这个pom.xml文件主要注意两点,一个就是<packaging>的类型,应该是maven-plugin

,还有一个就是Maven插件项目必须依赖一个插件maven-plugin-api

之后咱们再来看真正为客户端提供“特殊”Maven“服务”的类插件类必须继承自类org.apache.maven.plugin.AbstractMojo。这里面的一些注解比较有意思,大家别当它是普通的注释信息,Maven编译的时候不会忽略这些注释信息的,这些注释信息暗含了该插件的执行信息。

package com.liuyan.account.MavenAccount_Plugin;

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

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

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

	/**
	 * @parameter expression="${age}"
	 * @required
	 */
	int age;

	/**
	 * @parameter expression="${isOk}"
	 * @required
	 */
	boolean isOk;

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

	public String toString() {
		return "String is : \"" + name + "\"" + "int is : \"" + age + "\""
				+ "boolean is : \"" + isOk + "\"";
	}

}

 

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

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

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

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

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

3.  使用自定义插件

使用插件之前先进行安装install

之后在命令行输入如下命令

com.liuyan.account:MavenAccount-Plugin:info -Dname=liuyan -Dage=25 -DisOk=true

 输出如下效果

[INFO] --- MavenAccount-Plugin:1.0:info (default-cli) @ MavenAccount-Plugin ---
[INFO] String is : "liuyan"int is : "25"boolean is : "true"
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.609s
[INFO] Finished at: Thu Jun 23 23:17:45 CST 2011
[INFO] Final Memory: 2M/15M
[INFO] ------------------------------------------------------------------------

 插件输出了相关信息。您可以为您的服务提供更特殊的定制化“服务”。

7
1
分享到:
评论

相关推荐

    Maven3实战笔记(整合)

    学习如何编写Maven插件,可以极大地扩展Maven的功能边界。 7. **Maven仓库管理**:Maven使用本地仓库存储下载的依赖,也支持远程仓库(如Maven Central Repository)。理解如何配置Maven仓库,以及如何部署自己的...

    Maven3实战笔记

    【Maven3实战笔记】 Maven3是一款强大的Java项目管理和集成工具,由Apache软件基金会开发。它通过提供一套标准化的构建、依赖管理和项目信息管理的方式来简化项目的生命周期。本实战笔记将深入探讨Maven3的核心概念...

    Maven入门实战笔记02-基础(2)

    例如,"hello-world"项目在POM文件中可能会声明对JDK和Maven插件的依赖。 依赖管理是Maven的另一大亮点。在POM文件中声明依赖后,Maven会自动下载这些依赖到本地仓库,避免了手动管理jar包的麻烦。此外,Maven还...

    尚硅谷Maven课程笔记代码资源

    【尚硅谷Maven课程笔记代码资源】是一份全面学习Maven的资料集合,它涵盖了从基础到高级的各种知识点,旨在帮助开发者深入理解并熟练运用Maven进行自动化构建。该资源包含课件、源码和相关的笔记,使得学习过程更加...

    Maven3 学习笔记

    总的来说,这篇“Maven3 学习笔记”可能会详细讲解 Maven3 的基本概念,如生命周期、构建阶段、依赖管理和插件系统。还会涉及如何配置 Maven,特别是 `settings.xml` 文件的个性化设置,以及通过一个实际项目(如 ...

    maven3含教程

    "Maven3实战笔记"可能是包含了一系列实际案例和技巧的文档,涵盖了如何解决构建中的常见问题,优化构建效率,以及如何编写和调试自定义插件等内容。这样的资源对于深入理解和应用Maven3非常有帮助。 总结,Maven3...

    ant maven3

    4. **Maven3实战笔记-书签版-《jianggq工作室》.pdf**:这是一本关于Maven3的实战教程,可能包含了Maven3的使用技巧、最佳实践和常见问题解决,适合Maven初学者和进阶者阅读。 5. **Mavenʵס.pdf**:这个文件名可能...

    junit、maven、markdown、mybatis工具书

    《Maven权威指南中文版》将指导你理解和使用Maven生命周期,创建和管理多模块项目,以及配置Maven插件来实现特定的构建任务。书中还涵盖了设置Maven仓库、解决依赖冲突以及优化构建速度等实用技巧。 【Markdown语法...

    经典JavaEE5规范学习笔记

    - 编写Maven插件:扩展Maven功能,可以通过开发插件满足特殊需求。 3. Maven环境的搭建 - 下载Maven:从Apache网站下载Maven安装包。 - Maven的版本选择:可以选择合适的Maven版本,如文中提到的Maven3。 4. Maven...

    MyBatis Plus全套学习资料(带源码和笔记)

    6. 分页插件:内嵌分页插件,支持多种数据库的分页查询,无需编写分页SQL。 7. 乐观锁/悲观锁:提供乐观锁和悲观锁机制,保证数据一致性。 三、使用步骤 1. 引入依赖:在项目中引入MyBatis Plus的Maven或Gradle依赖...

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip

    Java秒杀系统方案优化高性能高并发学习实战源代码以及笔记..zip 章节笔记 第1章-课程介绍及项目框架搭建 知识点 使用spring boot 搭建项目基础框架 使用Thymeleaf做页面展示,封装Result统一结果 集成 mybatis + ...

    springboot学习笔记(史上最全)

    **SpringBoot学习笔记** SpringBoot是由Pivotal团队开发的一款基于Java的轻量级框架,旨在简化Spring应用的初始搭建以及开发过程。它通过自动配置、起步依赖和运行时嵌入式服务器,使得开发者能够快速地创建独立的...

    Eclipse开发学习笔记

    4. **构建工具**:通过Ant或Maven插件,Eclipse可以自动化处理项目的构建过程,包括编译、打包和部署。 5. **版本控制**:Eclipse与Git、SVN等版本控制系统无缝集成,支持代码的版本管理和协同开发。 **Eclipse...

    《IT学习资料》-SSM实战项目-Java高并发秒杀API,详细流程+学习笔记.zip

    6. **学习笔记**:随项目提供的学习笔记会详细解释每个步骤的实现细节,包括配置文件的编写、控制器的设定、Service和DAO层的设计以及数据库的交互,这对于初学者理解整个项目的运作机制非常有帮助。 7. **....

    狂神说Mybatis笔记,md格式的

    本笔记基于狂神说的讲解,将全面解析Mybatis的核心概念、使用方法以及实战技巧。 1. **Mybatis概述** Mybatis 是一个轻量级的ORM(Object-Relational Mapping)框架,它允许开发者用XML或注解来配置和映射原生信息...

    韩顺平_j2ee视频实战教程jsp第2讲_课件_笔记

    使用Eclipse进行Java开发时,可以创建新的Java项目,编写代码,利用内置的Maven或Ant构建工具进行编译,通过调试器进行代码调试,以及利用版本控制系统(如Git)进行代码管理。 ### Model1模式解析 Model1是MVC...

    j2ee学习笔记.rar

    **J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是Java平台的一个版本,专门针对企业级应用开发。它提供了一个全面的框架,用于构建、部署和管理分布式多层企业应用程序。本笔记主要围绕J2EE的...

    JUnit入门笔记~

    JUnit是Java编程语言中最常用的单元测试框架之一,用于编写和执行可重复的自动化测试。这篇入门笔记将带你深入了解JUnit的基本概念、使用方法以及其在实际开发中的应用。 **一、JUnit简介** JUnit是一个开源的、...

Global site tag (gtag.js) - Google Analytics