如何在 Open Liberty 服务器开发模式(使用 liberty-maven-plugin)中调试我的测试并切换调试器 on/off?

How can I debug my tests in Open Liberty server dev mode (using liberty-maven-plugin) and toggle the debugger on/off?

摘要

如何在 liberty-maven-plugin 的 "dev mode" 中迭代 运行 我的 unit/integration 测试并轻松打开和关闭调试器在 JVM 中的启动 运行自行测试?

背景

虽然 liberty-maven-plugin 默认以调试模式启动 Open Liberty 服务器,但有时您需要调试 unit/integration 测试本身的源代码。 liberty-maven-plugin 开发模式启动服务器,并且(默认情况下)每次我点击 <Enter>.

时都会 运行 我的测试

我可以利用标准 documented 方法,默认情况下会启动一个分支 JVM,等待端口 5005 上的调试器,例如:

mvn -Dmaven.failsafe.debug liberty:dev

但是如果我已经启动了开发模式但没有在命令行上设置 属性 怎么办?

有没有简单的方法可以事后启用调试器?或者在执行之间切换 on/off?

“切换”测试调试模式的一种简单方法是使用 Maven 项目属性并动态地 comment/uncomment 输出标准测试调试属性,例如maven.failsafe.debug.

例如,这将在分叉的 JVM 中启动 IT,挂起并等待端口 5005 上的调试器:

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.failsafe.debug>true</maven.failsafe.debug>
        <!-- 
          <maven.surefire.debug>true</maven.surefire.debug>
        -->
    </properties>

您还可以在 pom.xml 中使用普通插件配置配置 maven-failsafe-plugin 以配置非默认行为。

这应该适用于最近(自 v3.1 起)版本的 liberty-maven-plugin,例如:

        <plugin>
            <groupId>io.openliberty.tools</groupId>
            <artifactId>liberty-maven-plugin</artifactId>
            <version>3.3.3</version>
        </plugin>

这可以应用于像这里这样的简单示例应用程序: https://openliberty.io/guides/getting-started.html

警告

不要错误地将值切换为“false”,因为您实际上是在配置 this 参数。只需将其完全注释掉,以避免调试器挂起。