如何配置 VSCode 以带参数运行 Java MAVEN 应用程序?

Ari*_*tle 3 java maven-2 maven-3 maven visual-studio-code

我有一个没有 main 方法的代码。该项目是使用以下命令执行的:

$mvn clean install -Dparam1="folder" -Dparam2="path"
Run Code Online (Sandbox Code Playgroud)

在 Eclipse 或 IntelliJ 中,我只需要创建一个 Maven 执行器,将 goas 定义为clean install并使用格式传递 Maven 参数-Dparam

在 VSCode 中,我看到了 3 种不同的方法并尝试了以下方法:

  1. 创建一个lunch.json调用该命令的文件mvnmvnDebugpreLaunchTask.
{
  "version": "0.2.0",
  "configurations": [
    {
        "type": "java",
        "request": "launch",
        ...
        "preLaunchTask": "mvnDebug",
        "vmArgs": [ "clean", "install", "-Dparam1=\"blabla\"", "-Dparam2=\"blablabla\"" ]

    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我还测试了在preLaunchTask没有vmArgs. 并没有奏效。

  1. 创建一个task.json传递脚本的文件和一个launch.json将调用使用preLaunchTask参数中定义的名称创建的任务的文件。taskNametask.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "request": "launch",
            "preLaunchTask": "Debug",
            "name": "Launch Program",
            "sourceMaps": true
        }
    ]
Run Code Online (Sandbox Code Playgroud)

还有tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Debug",
            "type": "java",
            "script": "mvnDebug clean install -Dparam1=\"folderName\" -Dparam2=\"blablabla\"",
            "problemMatcher": []
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)
  1. 我尝试过的第三种方法是使用settings.json
{
    "maven.terminal.favorites": [
        {
            "alias": "CLEAN COMPILE",
            "command": "clean install -Dparam1=\"value\" -Dparam2=\"blabla\"",
            "debug": true
        },
    ]
}
Run Code Online (Sandbox Code Playgroud)

对于他们所有人,我在终端中收到了消息:

Listening for transport dt_socket at address: 56787
Run Code Online (Sandbox Code Playgroud)

伙计们,我需要你们做的是:

  1. 这个消息是什么意思?
  2. 为什么要等待端口?
  3. VSCode 如何使用套接字来做到这一点?
  4. 最好的方法是什么?为什么?
  5. 最重要的一件事:如何使用 VSCode 在没有主函数代码的情况下运行我的 JAVA MAVEN 参数化?

观察:我的 JAVA 版本是 JDK11,但我也尝试过 JDK 8。

万分感谢。

Mol*_*SFT 5

1.在 中launch.json,属性vmArgs

JVM 的额外选项和系统属性(例如 -Xms -Xmx -D=),它接受字符串或字符串数​​组。 调试启动

所以它不适用于您的应用程序。

2.在 中tasks.json,该属性command是要执行的命令;

客户任务

3.建议使用setting maven.executable.options ,它为所有mvn命令指定默认选项。

vscode-maven

在此输入图像描述