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的工程启动接收远程连接并以此运行
启动接收远程连接的配置如下所示:
扫描二维码关注公众号,回复:
8567430 查看本文章
其中关键配置是:
-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 {}