如何编写一个Maven插件

 我来答
兄弟连教育
2017-02-10 · 百度知道合伙人官方认证企业
兄弟连教育
兄弟连教育成立于2006年,11年来专注IT职业教育,是国内专业的IT技术培训学校。2016年成功挂牌新三板(股票代码:839467)市值过亿。开设专注程序员培训专注php、Java、UI、云计算、Python、HTML5、
向TA提问
展开全部
1.创建一个插件项目
要创建一个插件项目,你应该使用Maven Archetype插件。以下的命令会创建一个
插件,其groupId是org.codehaus.mojo,artifactId是first-maven-plugin:
$ mvn archetype:create \
-DgroupId=org.codehaus.mojo\
-DartifactId=first-maven-plugin \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-mojo
groupId默认情况下有两个可以使用,一般不要改动,artifactId自己随便命名
工程创建后会包含一个pom.xml,如下:
<?xml version="1.0" encoding="UTF-8"?><project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.codehaus.mojo</groupId>
<artifactId>first-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<name>first-maven-plugin 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>

<dependencies></dependencies>里是该插件的依赖,以后需要可手动添加。
2.创建mojo
Mojo接口只关心两件事情:目标运行结果的日志记录,以及运行一个目标。当你编写自
定义插件的时候,你会要扩展AbstractMojo。AbstractMojo处理setLog()和getLog()的
实现,并包含一个抽象的execute()方法。在你扩展AbstractMojo的时候,你所需要做的
只是实现execute()方法。
每一个mojo需要一个独立标识

echo表示该mojo的入口
3.一个简单的mojo
package org.sonatype.mavenbook.plugins;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;

public class EchoMojo extends AbstractMojo
{

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

@requiresProject false可以让mojo编译后在任意目录下执行
进到工程存放目录下mvn install后,就可以在命令行
$ mvn org.codehaus.mojo:first-maven-plugin:1.0-SNAPSHOT:echo
就会打印出Hello Maven World...
4.配置插件前缀
在命令行声明groupId,artifactId,version和goal十分麻烦。为了处理这个问题,Maven为插件分配了前缀。
在总控pom.xml中配上
<build>
<plugins>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<configuration>
<goalPrefix>first</goalPrefix>
</configuration>
</plugin>
</plugins>
</build>
就可以在命令行中执行
mvn first:echo
5.传递参数

private Object message;

maven提供了一种用注释传递参数的方法,非常强大。变量${echo.message}的值为NULL时,就会使用
default-value的值,此时private Object message = "Hello Maven World..."
也可以通过调用该mojo时将参数传进来,方法如下:
在另外一个mojo的总控pom.xml中配置如下片段:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>first-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>mymojo</id>
<phase>process-resources</phase>
<goals>
<goal>echo</goal>
</goals>
<configuration>
<message>I love you!!</message>
</configuration>
</execution>
</executions>
</plugin>
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式