• 如何Maven结合IDEA进行Debug


    介绍

    由于Idea和Maven class loading的规则不同, 同样的测试使用Maven运行和使用Idea运行可能会得到不同的结果。 而我们的CI(持续集成)往往是使用maven 命令去运行的。
    在此情况下, 将测试使用maven运行起来, 然后结合IDEA强大的debug能力就显得非常必要。如果熟练掌握此种debug方式, 也可以减少我们依赖idea进行编译,更新index这些极其耗时的工作。

    创建一个测试

    假设我们已经创建了一个工程maven_debug, 并且创建了一个测试类MySuperClassTest

    启动mmaven测试并运行在debug模式

    mvn -Dtest=MySuperClassTest -Dmaven.surefire.debug test
    
    • JVM参数 -Dmaven.surefire.debug即表示将测试运行在debug模式下
    • 这时maven将会首先编译测试,然后启动测试,并等待IDE接入debug模式, 此时我们要配置IDEA运行一个remote JVM debug进程, 接入mvn debug.
    • 通常情况下, 测试将会监听在5005端口。

    配置remote JVM debug模板

    • 打开idea, 从以下路径 打开remote JVM debug配置界面 run-> edit configurations-> Edit configuration templates -> remote JVM debug
    • 修改或检查command line arguments for remote JVM 中的端口和其他参数正确, 端口即为上一步mven debug监听的端口, 默认为5005
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
    
    • 确保host参数正确, transport参数正确
    • 参数都填写正确后, 点击appy按钮保存修改, 这一步完成,代表我们的 remote JVM debug模板配置完成, 接下来我们需要基于此模版, 创建一个进程去连接maven测试。

    启动remote JVM debug进程

    打开run/debug configuration界面, 路径run-> edit configurations
    点左上角+按钮, 在弹出的选择框中, 选择remote JVM debug模板,创建一个run/debug配置,点击apply保存。
    此时在tools bar run/debug下拉列表就可以看到新创建的run/debug 配置, 单击即可启动此该remote JVM debug进程

    设置断点

    在IDEA中设置断点, 当程序运行到断点位置就会停下。

    其他

    如果你需要debug一个maven插件 那么需要使用另外一个maven命令mvnDebug

    mvnDebug -Dtest=MySuperClassTest test
    

    mvnDebug 默认监听在8000端口, 需要启动一个remote JVM debug进程连接其8000端口, 这样即可在IDEA中debug maven插件。

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

    参考文档

    How to Debug a Test Run with Maven

    Run Maven tests with -Dmaven.surefire.debug and -DforkMode=never

    转载请注明出处, 更多博文请访问https://www.cnblogs.com/guoapeng/
  • 相关阅读:
    C指针QQ群问答
    英语音标与汉语拼音
    jquery插件validation
    ORACLE纵向表转换为横向表写法
    安装vagrant&virtualBox
    tp5 上传视频到七牛云
    解决VirtualBox错误:“FATAL:No bootable medium found!”
    PyCharm切换Python版本
    七牛云的使用
    一起谈.NET技术,C#中int和System.Int32理解总结 狼人:
  • 原文地址:https://www.cnblogs.com/guoapeng/p/15719510.html
Copyright © 2020-2023  润新知