Maven作为一款流行的项目管理及构建工具,因为其使用方便,众多出色的功能以及丰富的插件而受到欢迎。尽管如此众多的插件为我们提供了几乎所需要的所有功能,但我还是想进一步了解如何编写一个自定义插件呢。那么按照下面的步骤我们就可以完成一个自定义的插件了。
先来看看我的环境吧。
如果你熟悉Maven的话,那你应该知道Maven为我们提供了简单的命令来构建各种项目的原型框架。现在我们需要创建一个Archetype为maven-archetype-mojo的项目。你可以在命令行中输入mvn archetype:generate,选择archetype类型来创建我们需要的项目原型,或者利用IDE来快速创建。
来看看我的pom文件
<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.sayhi</groupId>
<artifactId>sayhi</artifactId>
<packaging>maven-plugin</packaging>
<version>1.0</version>
<name>SayHelloPlugin Maven Mojo</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
再来看看我的类吧
package SayHelloPlugin;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.Log;
/**
* Goal which touches a timestamp file.
*
* @goal sayhello
*/
public class MyMojo extends AbstractMojo {
public void execute() throws MojoExecutionException {
Log log = this.getLog();
log.info("\n");
log.info("=============================");
log.info("This is a maven plugin test.");
log.info("=============================");
log.info("\n");
}
}
当然,这个类的作用仅仅是为了说明我们的插件实现必须继承AbstractMojo这个类而已,除此之外没有其他作用。
如果你实现了你自己的插件类后。那么下面我们就需要在命令行进入我们的项目目录,输入mvn:install命令了,这样可以帮我们把项目打包并部署到我们本地的repository中去。
如果想要调用我们的插件呢,你需要在命令行中输入如下命令:mvn groupid:artifactId:goal。
如果你想要将你的插件部署到服务器上,那么你就需要mvn:deploy命令。
详情请参见附件。
- 大小: 13.8 KB
分享到:
相关推荐
AnnoTest.zip,用于测试注释处理器的实用类。Java中的单元测试注释处理器的辅助类。
直接离线安装eclipse中的maven插件,在你的eclipse安装根目录下创建两个文件夹:links,myplugins(文件夹名字可以自定义),所在路径D:\eclipse。将下载下来的maven插件放到myplugins下。载links目录下创建一个...
Maven-assembly-plugin是maven中针对打包任务而提供的标准插件,可以实现自定义打包。主要提供如下功能: ● 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 ● 打包成指定格式分发包,...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor (default -descriptor) on project maven-project: Error extracting plugin descriptor: ‘No mojo definitions wer...
Flatten Maven插件 生产发布 开发发布 安装 相似的插件 插件功能 取代公开的身份 解决依赖版本范围 根据范围排除依赖项 可选地包括传递依赖 根据xml标签名称删除pom.xml成员 用生成的pom.xml.flatten切换项目pom....
apigee-config-maven-plugin Maven插件,用于创建,管理Apigee配置,如缓存,KVM,目标服务器,资源文件,API产品,开发人员,开发人员应用,流钩子,扩展,掩码配置,自定义角色和API规范。 注意: mvn apigee-...
Swagger Maven插件 这个插件使您的Swagger注释项目可以在maven构建阶段生成Swagger规范和可自定义的模板化静态文档。 与swagger-core不同,swagger-maven-plugin不会在其余应用程序中主动满足规范要求。 它将规范...
插件定义: < plugin> < groupId>io.yupiik.maven</ groupId> < artifactId>yupiik-tools-maven-plugin</ artifactId> ${yupiik-tools.version}</ version></ plugin>目标PDF格式渲染PDF中的asciidoctor文件。...
pom.xml自定义属性(例如${spring.version} ), java属性(例如${java.version} ) 操作系统环境(例如${env.HOME} ) Maven的settings.xml属性(例如${settings.offline} ) 例子 pom.xml <groupId>ru....
replace-maven-plugin 1. 背景 背景:swift引擎fr版本和开源版本维护两套代码(就包名不同)太麻烦,维护成本高 要求:代码启动时用原包名jar,但是打包fr版本时,要替换成com.fr.third的包名 预期:开源版本和fr...
在前面几篇博客中我们讲解了简单的自定义插件开发工作,今天我们讲解一下扩展maven-compiler-plugin的processor功能。 一、maven-compiler-plugin 我们知道Maven只是个项目管理工具,如果要编译Java代码是不行的,而...
lein-maven-plugin 从Maven内部执行leiningen任务。 使用leiningen作为库,没有自定义下载。 用法 该插件只有一个目标, run 。 它的配置是leiningen命令行参数。 < plugin> < groupId>ingesolvoll ...
hive-serde.zip,用于构建自定义配置单元serdesa的库用于构建自定义配置单元serdes的库
maven的插件demo,包含了与maven声明周期的绑定,自定义参数等,但是这就是一个demo,只是演示了maven插件的编写方式
<artifactId>tractor-maven-plugin <version>1.0-SNAPSHOT <projectName>JUnitTestNG <uploadApplicationFilename>app-debug.apk <uploadTestFilename>framework-zip-with-dependencies.zip</uploadTest
mdmcba-maven-plugin 该插件可用于构建和打包在IBM MDM Workbench中创建MDM项目期间创建的CBA应用程序。 该插件不会取代在CBA项目中生成Manifest.MF的需要。 保留正确和有效的清单仍由开发人员负责。 该插件仅有助...
一个Maven插件,可解析结果XML文件并生成带有图表的详细报告 可以与同一作者开发的结合使用 特征 响应持续时间和响应大小的某些统计信息(最小值,最大值,平均值,标准差,分位数)的文本和HTML输出 使用呈现输出...
用于构建intellij / IDEA插件的自定义Maven打包 例如,请参阅集成模块中的pom.xml。
当前pom.xml中详细的记录了将maven项目打成可运行jar包的完整代码,使用maven的插件maven-assembly-plugin,同时将所有依赖打到jar包中,亲测可用。