如何创建vs代码任务以在tomcat扩展名上部署WAR文件?

时间:2019-07-01 19:33:28

标签: java tomcat visual-studio-code

我正在从Eclipse迁移到VS-Code,并且试图快速进行部署过程。我想创建一个vs代码任务来部署WAR文件。 我正在使用命令 adashen.vscode-tomcat:tomcat.war.run ,但该命令无法正常工作。

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

我的task.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 << / p>   

     

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

     

终端进程命令'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)

     

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

有人知道吗? 谢谢

2 个答案:

答案 0 :(得分:1)

在阅读source code之后,我认为如果该方法将文件路径作为字符串接受,或者您设法将'vscode.Uri'对象作为参数传递给'tomcat.war,则它可以工作。运行”命令。

这是我在整个过程中可能会遇到的最好情况,但是每次运行此任务时,您仍然必须手动选择.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"}
//          }
        }
    ]
}

答案 1 :(得分:0)

它可能看起来像这样。

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

经过大量的搜索,我从这里得到了帮助:https://stackoverflow.com/a/57470981/4588923

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

尽管该调用可以从task.json执行,但是我认为主要问题是扩展名不支持这样做。可能是功能请求按顺序进行。