使用 VSCode 调试多模块 Maven 项目的正确方法是什么?

Wil*_*iam 9 java maven visual-studio-code vscode-debugger

这是我的具体案例的一些背景。我获得了一个多模块 Maven 项目,并在 VSCode 中将整个项目作为一个工作区打开。这些模块作为文件部署到 JBoss 服务器.war。每个模块都有自己的模块artifactId,并且可以调用其他模块(通过 HTTP 或其他协议)。我launch.json在目录中创建了一个文件.vscode。该.vscode目录位于项目根目录下的其他模块中。该launch.json文件包含以下内容:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "java",
      "name": "Debug (Attach) - Remote",
      "request": "attach",
      "hostName": "<ip_address>",
      "port": 8787
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

如果我不需要在调试控制台中评估语句,则此方法有效。"projectName": "<artifactId>"当我需要评估单个模块的语句时,我还可以添加。但是,我无法同时调试多个模块。我当前正在做的是 1)停止调试器,2)编辑projectName下一个模块artifactId,3)再次附加调试器(并触发新请求)。这听起来不像是在 VSCode 中调试此类项目的最佳方式。请注意,我还尝试将父 POMartifactId甚至项目根目录名称设置为projectName,但它们都不起作用(在本例中,它只是说“无法评估,因为 java.lang.IllegalStateException:项目 <name> 无法被发现”)。

小智 0

您是否尝试过将projectName设置为通配符?

{
    "version": "0.2.0",
    "configurations": [
      {
        "type": "java",
        "name": "Debug (Attach) - Remote",
        "request": "attach",
        "hostName": "<ip_address>",
        "projectName": "*",
        "port": 8787
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

据我记得,通配符支持是依赖于调试器的,所以如果Java调试器没有实现它,这可能不起作用。

但是,您可能希望创建多个配置以避免每次都替换projectName :

{
    "version": "0.2.0",
    "configurations": [
      {
        "type": "java",
        "name": "Debug (Attach) - Remote - Prj1",
        "request": "attach",
        "hostName": "<ip_address>",
        "projectName": "project1",
        "port": 8787
      },
      {
        "type": "java",
        "name": "Debug (Attach) - Remote - Prj2",
        "request": "attach",
        "hostName": "<ip_address>",
        "projectName": "project2",
        "port": 8787
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

您将能够从“运行和调试”下拉菜单中轻松运行所需的程序。

编辑:刚刚注意到这个问题已经有3年历史了……哦,好吧,如果还需要的话