手动开发一个maven插件系列1---调式maven插件代码

Maven支持

平常我们打包一般直接使用mvn ...,实际上

在maven的bin目录下可以看到一个mvn, 一个是mvnDebug

我们常用的操作比如mvn clean

如果你想调试mvnDebug clean

那么如何在两个工程中进行通信debug,java提供了一个叫做Java Debug Wire Protocol (JDWP)的协议

如上图,进行通信和调试和处理,当然通信这块和协议这块应该有很多细节。明白了上面的操作过程,再来配置,就十分有方向

Step1: 启动监听

首先,在使用maven的工程通过执行命令启动监听,例如如下:

F:>mvnDebug saturn:zip
Listening for transport dt_socket at address: 8000

Step2:远程连接

其次,在编写的maven的工程启动接收远程连接并以此运行

启动接收远程连接的配置如下所示:

其中关键配置是:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

应用之后会在Run中出现,Debug Remote的栏目,如下图所示:

Step3:打断点并debug

点击运行,会启动工程,正常情况下,8000端口已经可以被连接进来,并会中断在代码中的断点处。

番外

值得一提的是,我们开发maven插件都是在org.apache.maven.plugin基础上进行的,它已经帮我们完成了实际中的大部分需求,所以我们在实际开发中只需要extends AbstractMojo并实现execute()方法即可,所以我们在打断点调试的时候也需要打在execute()方法执行的路径中。举例如下:

@Mojo(name = "run", requiresDependencyResolution = ResolutionScope.RUNTIME)
@Execute(phase = LifecyclePhase.COMPILE)
public class SaturnJobRunMojo extends AbstractMojo {

	@Parameter(property = "namespace")
	private String namespace;

	@Parameter(property = "executorName")
	private String executorName;

	@SuppressWarnings("unchecked")
	@Override
	public void execute() throws MojoExecutionException, MojoFailureException {}

参考

https://www.cnblogs.com/turn2i/p/11823884.html

发布了362 篇原创文章 · 获赞 144 · 访问量 110万+

猜你喜欢

转载自blog.csdn.net/FENGQIYUNRAN/article/details/103951039