Maven:自定义插件(插件开发)

插件开发

创建工程设定打包方式

<packaging>maven-plugin</packaging>

引入依赖

下面两种方式二选一:

将来在文档注释中使用注解
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-plugin-api</artifactId>
    <version>3.5.2</version>
</dependency>

将来直接使用注解
<dependency>
    <groupId>org.apache.maven.plugin-tools</groupId>
    <artifactId>maven-plugin-annotations</artifactId>
    <version>3.5.2</version>
</dependency>

创建 Mojo 类

Mojo 类是一个 Maven 插件的核心类。

Mojo 这个单词的意思是:Maven Old Java Object,其实 mojo 这个单词本身包含魔力;符咒(袋);护身符;(人的)魅力的含义,Maven 用 Mojo 是因为它是对 POJO 开的一个小玩笑。

AbstractMojo 抽象类

我们实现 Mojo 接口比较困难,幸好可以继承 AbstractMojo,此时我们只要实现 execute() 这一个方法即可。

public class MyHelloPlugin extends AbstractMojo {
    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("---> This is my first maven plugin. <---");
    }
}

插件配置

文档注释中用注解

对应的 pom.xml 中的依赖: maven-plugin-api

/**
 * goal 指定调用本类execute()方法的目标
 * @goal sayHello
 */ 
public class MyHelloPlugin extends AbstractMojo {
    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("---> first blood <---");
    }
}
直接在类上标记注解

对应 pom.xml 中的依赖:maven-plugin-annotations

// name 属性:指定调用本类execute()方法的目标
@Mojo(name = "sayHello")
public class MyHelloPlugin extends AbstractMojo {
    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("---> first blood <---");
    }
}

安装插件

要在后续使用插件,就必须至少将插件安装到本地仓库。

注册插件

我们需要将插件坐标中的 groupId 部分注册到 settings.xml 中。

<pluginGroups>
	<!-- pluginGroup
	 | Specifies a further group identifier to use for plugin lookup.
	<pluginGroup>com.your.plugins</pluginGroup>
	-->
	<pluginGroup>com.wuxian.maven</pluginGroup>
</pluginGroups>

使用插件

识别插件前缀

Maven 根据插件的 artifactId 来识别插件前缀。例如下面两种情况:

]前置匹配

匹配规则:${prefix}-maven-plugin
artifactId:hello-maven-plugin
前缀:hello

中间匹配

匹配规则:maven-${prefix}-plugin
artifactId:maven-hello-plugin
前缀:hello

在命令行直接用

命令:
mvn hello:sayHello
效果:

在这里插入图片描述

配置到 build 标签里

这里找一个和插件无关的 Maven 工程配置才有说服力。

配置
<build>
	<plugins>
		<plugin>
			<groupId>com.atguigu.maven</groupId>
			<artifactId>hello-maven-plugin</artifactId>
			<version>1.0-SNAPSHOT</version>
			<executions>
				<execution>
                    <id>hello</id>
                    <!-- 指定和目标关联的生命周期阶段 -->
					<phase>clean</phase>
					<goals>
						<goal>sayHello</goal>
					</goals>
				</execution>
                <execution>
                    <id>blood</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>firstBlood</goal>
                    </goals>
                </execution>
			</executions>
		</plugin>
	</plugins>
</build>
效果

在这里插入图片描述

命令行使用

执行已和插件目标绑定的生命周期:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Maven定义件是通过创建Plugin项目来实现的。在Maven项目中,件被打包成jar文件,并在pom.xml中进行配置和调用。 首先,我们需要在件项目的pom.xml中声明件的元数据信息,包括件的groupId、artifactId、version等。然后,在项目的src/main/java目录下创建件的实现类,该类需要继承AbstractMojo类,并实现execute方法。在execute方法中编写件的执行逻辑。 在定义件时,除了实现类,还可以定义一些件参数。这些参数可以通过件的参数注解进行定义,并在件实现类中获取和使用。参数注解包括@Parameter、@MojoParameter等。 在编写件逻辑时,我们可以调用Maven提供的API来实现自定义的功能。这些API包括Project对象、MavenSession对象等,可以用于获取项目信息、执行Maven命令等。 编写件完成后,我们需要在件项目的pom.xml中配置maven-plugin-plugin件来进行打包。该件会根据件项目中的配置信息来生成件的描述文件。我们还可以在pom.xml中配置其他件,用于生成件的部署和安装文件。 最后,我们需要在使用件的项目的pom.xml中进行件的配置和调用。配置件的groupId、artifactId、version等,并指定件的执行阶段和参数等。 总的来说,Maven定义件是通过创建件项目,编写件类和配置件的元数据信息来实现的。件项目的打包和安装后,可以在使用件的项目中进行配置和调用,实现自定义的功能。件的编写和使用可以提高项目的灵活性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员无羡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值