【问题标题】:How to create a vs-code task to deploy WAR file on tomcat extension?如何创建一个 vs-code 任务以在 tomcat 扩展上部署 WAR 文件?
【发布时间】:2019-07-01 19:33:28
【问题描述】:

我正在从 Eclipse 迁移到 VS-Code,并且正在尝试快速完成部署过程。我想创建一个 vs-code 任务来部署 WAR 文件。 我正在使用命令 adashen.vscode-tomcat:tomcat.war.run 但它似乎不起作用。

我将 Tomcat 用于 Visual Studio Code 扩展 v.0.11.1。

我的 tasks.json 看起来像这样:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "gradlew clean build",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "Deploy",
            "type": "shell",
            "command": "adashen.vscode-tomcat:tomcat.war.run",
            "args": ["${workspaceFolder}\\build\\libs\\SMEWeb-0.0.1-SNAPSHOT.war"]
        }
    ]
}

执行后出现以下错误:

在 SMEWeb 文件夹中执行任务:adashen.vscode-tomcat:tomcat.war.run C:\WorkspaceGit\sme\SMEWeb\build\libs\SMEWeb-0.0.1-SNAPSHOT.war

文件名、目录名或卷标语法不正确。

终端进程命令'C:\Windows\system32\cmd.exe /d /c adashen.vscode-tomcat:tomcat.war.run C:\WorkspaceGit\sme\SMEWeb\build\libs\SMEWeb-0.0.1-SNAPSHOT.war' 启动失败(退出代码:1)

终端将被任务重用,按任意键关闭它。

有人知道吗? 谢谢

【问题讨论】:

  • 如果不使用task,能否部署成功?
  • 是的,我得去生成的WAR文件,右击“在Tomcat服务器上运行”。
  • 你有没有尝试cd生成war文件,然后在任务command中部署.war?
  • 是的,它不起作用。即使是一个简单的命令来启动没有 args 的 tomcat ("command": "adashen.vscode-tomcat:tomcat.server.start") 返回相同的错误..

标签: java tomcat visual-studio-code


【解决方案1】:

阅读source code 后,我认为如果该方法接受文件路径作为字符串或者您设法将“vscode.Uri”对象作为参数传递给“tomcat.war.run”,它可能会起作用命令。

这是整个过程中我能想到的最好的方法,但每次运行此任务时您仍然必须手动选择 .war:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "compile",
            "type": "shell",
            "command": "mvn compile",
            "problemMatcher": []  
        },
        {
            "label": "package",
            "type": "shell",
            "command": "mvn package",
            "dependsOn": ["compile"],
            "problemMatcher": []
        },
        {
            "label": "Run WAR",
            "command": "${input:runWar}",
            "dependsOn": ["package"],
            "problemMatcher": []
        }
    ],
    "inputs": [
        {
            "id": "runWar",
            "type": "command",
            "command": "tomcat.war.run"
//          ,"args": { DOESNT WORK =/
//              "uri" : {"fsPath" : "${workspaceFolder}/target/ROOT.war"}
//          }
        }
    ]
}

【讨论】:

    【解决方案2】:

    它可能看起来像这样。

        {
            "label": "Run",
            "command": "${command:tomcat.war.run}",
            "problemMatcher": []
        }
    

    经过一番搜索自己的用途后,我从这里得到了帮助:https://stackoverflow.com/a/57470981/4588923

    我还没有找到一种方法来提供 .war 文件作为参数并且它可以工作。

    虽然调用来自 tasks.json,但我认为主要问题是扩展不支持这样做。也许功能请求是有序的。

    【讨论】:

    • 同意,实际上我放弃了 VS Code 来做后端的事情,并返回我的 Eclipse。
    • 我回到 Netbeans 进行热交换代码、调试和部署到 Tomcat。现在是 2021 年,VSCode 的 tomcat 扩展还没有。
    【解决方案3】:

    RedHat 开发了一个 VSCode 扩展,可帮助在 VSCode 中配置和部署 tomcat 服务器。似乎比我尝试过的其他人好多了。

    VSCode Blog Post

    Community Server Connection VSCode Extension

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 1970-01-01
      • 2015-09-03
      相关资源
      最近更新 更多