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

问题描述 投票:0回答:2

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

$mvn clean install -Dparam1="folder" -Dparam2="path"

在 Eclipse 或 IntelliJ 中,我只需要创建一个 Maven 执行器,将 goas 定义为

clean install
并使用
-Dparam
格式传递 Maven 参数。

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

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

    }
  ]
}

我还测试了在没有

preLaunchTask
的情况下传递
vmArgs
中的所有命令。而且没有用。

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

还有

tasks.json

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

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

Listening for transport dt_socket at address: 56787

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

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

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

非常感谢。

java maven visual-studio-code maven-2 maven-3
2个回答
5
投票

1.在

launch.json
中,属性
vmArgs

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

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

2.在

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

客户任务

3.建议使用该设置

maven.executable.options
,它指定所有 mvn 命令的默认选项。

vscode-maven

enter image description here


0
投票

我找到了更好的解决方案。您可以在tasks.json 文件中为任务执行设置环境变量。这允许我们设置官方 Maven 环境变量“JVM_CONFIG_MAVEN_PROPS”:

.vscode 目录中的示例tasks.json。该示例展示了如何传递构建以及稍后的 Spring Boot 执行的配置文件。

{
    "version": "2.0.0",
    "tasks": [
    {
        "label": "Build & Run PROD",
        "type": "shell",
        "command": "mvn",
        "group": "build",
        "options": {
            "cwd": "${workspaceFolder}",
            "env": {
                "JVM_CONFIG_MAVEN_PROPS": "-Dspring.profiles.active=production  -Dspring-boot.run.profiles=production"
              }
         },
         "args": [
            "clean",
            "package",
            "spring-boot:run",
            "-Pproduction",
         ],

    },
    ]
}

从 mvn.cmd 或 mvnw.cmd 中提取。作为背景信息,这将如何通过:

"%JAVACMD%" ^
  %JVM_CONFIG_MAVEN_PROPS% ^
  %MAVEN_OPTS% ^
  %MAVEN_DEBUG_OPTS% ^
  -classpath %CLASSWORLDS_JAR% ^
  "-Dclassworlds.conf=%MAVEN_HOME%\bin\m2.conf" ^
  "-Dmaven.home=%MAVEN_HOME%" ^
  "-Dlibrary.jansi.path=%MAVEN_HOME%\lib\jansi-native" ^
  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
  %CLASSWORLDS_LAUNCHER% %MAVEN_ARGS% %MAVEN_CMD_LINE_ARGS%

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.